Tôi đang gặp sự cố khi chỉ định hai thuộc tính ủy quyền riêng biệt trên phương thức lớp: người dùng được phép truy cập nếu một trong hai thuộc tính là đúng.Nhiều thuộc tính ủy quyền trên phương thức
Các Athorization lớp trông như thế này:
[AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
public class AuthAttribute : AuthorizeAttribute {
. . .
và hành động:
[Auth(Roles = AuthRole.SuperAdministrator)]
[Auth(Roles = AuthRole.Administrator, Module = ModuleID.SomeModule)]
public ActionResult Index() {
return View(GetIndexViewModel());
}
Có cách nào để giải quyết này hay tôi cần phải suy nghĩ lại cách tiếp cận của tôi?
Điều này sẽ được chạy trong MVC2.
Nó sẽ có thể tạo ra một thuộc tính Authorization (tức ' public class MultipleAuthOrAttribute {') có thể lấy làm đầu vào một vài' AuthAttributes'? – adamse
Bạn không thể tạo Thuộc tính nhận các phiên bản Thuộc tính khác. Hàm tạo thuộc tính lớp chỉ có thể chấp nhận các giá trị hợp lệ thời gian biên dịch/các kiểu nguyên thủy. Đó là lý do tại sao 'AuthorizeAttribute' nhận vai trò như một chuỗi. –
Có thể ai đó cung cấp tham chiếu đến tài liệu chính thức hỗ trợ tuyên bố rằng nhiều cá thể 'AuthorizeAttribute' được xử lý dưới dạng logic' AND'. Trong các thử nghiệm của riêng tôi, có vẻ như thứ tự của các bộ lọc là quan trọng, với bộ lọc đầu tiên có thông báo cuối cùng về việc liệu xác thực có thành công hay không. –