Подтвердить что ты не робот

Можно ли установить атрибут [Авторизовать] по всему миру для всех контроллеров?

В настоящее время один кладет [Авторизовать] на класс контроллера или определенное действие. Можно ли настроить атрибут [Авторизовать] централизованно для всех контроллеров, скажем, для предотвращения неаутентифицированного использования. Затем после этого можно было определить более конкретные атрибуты [Авторизовать] на конкретном контроллере, например

[Authorize(Roles="Admin, SuperUser")]

Спасибо.

4b9b3361

Ответ 1

Это должно работать (поставить в Application_Start):

GlobalFilters.Filters.Add(new AuthorizeAttribute() { Roles = "Admin, SuperUser" });

Ответ 2

Другим вариантом является наличие наследуемых контроллеров от базового класса контроллера и размещение там Авторизуемого атрибута.

Посмотрите на этот ответ

Затем вы можете переопределить базовый атрибут AuthorizeAttribute на дочерних классах с определенными Ролями, пользователями и т.д.

[Authorize]
public class BaseController : Controller{}

public class ChildController: BaseController{}

[Authorize(Role = "Role A")]
public class AnotherChildController: BaseController{}