Прямо сейчас я украшаю метод, подобный этому, чтобы позволить "членам" получить доступ к моему действию контроллера
[Authorize(Roles="members")]
Как мне разрешить более одной роли? Например, следующее не работает, но показывает, что я пытаюсь сделать (разрешить доступ "members" и "admin"):
[Authorize(Roles="members", "admin")]
asp.net-mvc
controller
roles
codette
источник
источник
Ответы:
Другой вариант - использовать один фильтр авторизации, когда вы отправили, но удалить внутренние цитаты.
источник
Если вы хотите использовать пользовательские роли, вы можете сделать это:
CustomRoles
класс:использование
Если у вас мало ролей, возможно, вы можете объединить их (для ясности) следующим образом:
использование
источник
Одним из возможных упрощений будет подкласс
AuthorizeAttribute
:Использование:
Семантически это совпадает с ответом Джима Шмехила.
источник
Для MVC4, используя
Enum
(UserRoles
) с моими ролями, я использую кастомAuthorizeAttribute
.На моем контролируемом действии я делаю:
И я использую обычай,
AuthorizeAttribute
как это:Это часть модифицированного FNHMVC Фабрицио Мартинеса Тамайо https://github.com/fabriciomrtnz/FNHMVC/
источник
Другое ясное решение: вы можете использовать константы для соблюдения соглашения и добавления нескольких атрибутов [Authorize]. Проверь это:
Тогда в контроллере:
источник
Authorize
атрибутов используют семантику AND и требуют выполнения ВСЕХ условий (т. Е. Пользователь должен быть в роли администратора и гостя).Если вы часто применяете эти две роли, вы можете обернуть их в свой Авторизоваться. Это действительно расширение принятого ответа.
А затем примените свое новое разрешение к действию. Я думаю, что это выглядит чище и легко читается.
источник
Лучший код с добавлением подкласса
AuthorizeRole.cs
Как использовать это
источник
Используя AspNetCore 2.x, вы должны пойти немного другим путем:
просто используйте это так:
источник
источник