У меня возникли проблемы с указанием двух отдельных атрибутов авторизации для метода класса: пользователю разрешен доступ, если любой из двух атрибутов является истинным.Множественные атрибуты авторизации по методу
Athorization класс выглядит следующим образом:
[AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
public class AuthAttribute : AuthorizeAttribute {
. . .
и действие:
[Auth(Roles = AuthRole.SuperAdministrator)]
[Auth(Roles = AuthRole.Administrator, Module = ModuleID.SomeModule)]
public ActionResult Index() {
return View(GetIndexViewModel());
}
Есть ли способ решить эту проблему или мне нужно пересмотреть свой подход?
Это должно быть запущено в MVC2.
Можно ли создать еще один атрибут авторизации (т.е. ' public class MultipleAuthOrAttribute {'), который принимает в качестве входных данных несколько' AuthAttributes'? – adamse
Вы не можете создать атрибут, который принимает экземпляры других атрибутов. Конструктор класса атрибутов может принимать только допустимые значения/исходные типы времени компиляции. Вот почему 'AuthorizeAttribute' принимает роли как строку. –
Может ли кто-нибудь предоставить ссылку на официальную документацию, которая поддерживает утверждение, что несколько экземпляров 'AuthorizeAttribute' обрабатываются как логические' AND'. В моих собственных тестах кажется, что порядок фильтров важен, причем первый фильтр имеет последнее сообщение о том, прошла ли проверка подлинности. –