Mam problem z określeniem dwóch oddzielnych atrybutów autoryzacji dla metody klasy: użytkownik ma mieć dostęp, jeśli jeden z dwóch atrybutów jest prawdziwy.Wiele atrybutów autoryzacji dla metody
klasaAthorization wygląda następująco:
[AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
public class AuthAttribute : AuthorizeAttribute {
. . .
i działanie:
[Auth(Roles = AuthRole.SuperAdministrator)]
[Auth(Roles = AuthRole.Administrator, Module = ModuleID.SomeModule)]
public ActionResult Index() {
return View(GetIndexViewModel());
}
Czy istnieje sposób, aby rozwiązać ten problem lub muszę przemyśleć moje podejście?
Należy uruchomić w MVC2.
byłoby możliwe, aby utworzyć kolejny atrybut Authorization (czyli ' public class MultipleAuthOrAttribute {'), który jako dane wejściowe przyjmie kilka' AuthAttributes'? – adamse
Nie można utworzyć atrybutu, który pobiera instancje innych atrybutów. Konstruktor klas atrybutu może akceptować tylko prawidłowe wartości/typy pierwotne w czasie kompilacji. Dlatego 'AuthorizeAttribute' przyjmuje Role jako ciąg znaków. –
Czy ktoś może podać odniesienie do oficjalnej dokumentacji, która obsługuje stwierdzenie, że wiele instancji 'AuthorizeAttribute' jest przetwarzanych jako logiczne' AND'. W moich własnych testach okazuje się, że kolejność filtrów jest ważna, a pierwszy filtr ma ostateczny wpływ na to, czy uwierzytelnianie powiedzie się. –