Вы можете объединить любое количество атрибутов Authorize
.
т.е. Вы можете иметь атрибут Authorize
на вашем базовом контроллере и более конкретный атрибут на другом контроллере (например, указание роли) и наиболее специфичный атрибут действия контроллера (указание роли или пользователя).)
[Authorize]
public class BaseController : Controller
{}
[Authorize(Roles="Administrator")]
public class AdminController : BaseController
{
[Authorize(Roles="SuperUser")]
public ActionResult SuperSecret()
{}
}
Он проверит все атрибуты и отменит доступ только в случае сбоя любого из атрибутов.
В будущем мне потребуется, чтобы определенные страницы были доступны только пользователямв определенной роли.
Так работает аутентификация на основе ролей.
Список ролей будет взят из таблицы базы данных.
Загрузите роли в пользовательский IPrincipal
в методе OnPostAuthenticate
в global.asax.
, поэтому вместо изменения всех связанных контроллеров я просто делаю этоизменить базовый контроллер, от которого он наследуется.
Я не следую за вами по этому требованию.Вы хотите избежать указания ролей на своих контроллерах?