Есть ли способ, которым я могу установить [Authorize (Roles = "admin")] для каждого действия в контроллере MVC - PullRequest
4 голосов
/ 08 ноября 2011

У меня есть следующее:

[Authorize(Roles = "admin")]

Я устанавливаю это для каждого действия на моем контроллере. Однако есть ли способ сделать это глобально для контроллера?

Ответы [ 3 ]

5 голосов
/ 08 ноября 2011
[Authorize(Roles = "admin")]
public class AdminController : Controller
{
}

Атрибут работает и на контроллерах.

Вы даже можете создать базовый контроллер и установить для него атрибут (и, следовательно, получить одинаковую авторизацию для всех производных контроллеров)

[Authorize(Roles = "user")]
public class BaseController : Controller
{
}

public class NewsController : BaseController 
{
}

public class ForumController : BaseController 
{
    [HttpPost, Authorize(Roles="admin")]
    public ActionResult Delete(int id)
    {
    }
}

Обновление

Первый вопрос: Вы можете поместить [HandleError] в свой базовый контроллер, чтобы обработать ошибки MVC во всех контроллерах. Я только что написал запись в блоге , описывающую это.

Второй вопрос: да. Поместите в действия самый специфический атрибут [Authorize]. (например, авторизуйте «пользователей» в базовом контроллере и «администраторов» в действии «Редактировать»).

1 голос
/ 08 ноября 2011

Да, все, что вам нужно сделать, это поместить этот атрибут в верхнюю часть класса, где вы делаете его объявление.

[Authorize(Roles = "admin")]
public class TheController : Controller

Когда вы сделаете это, каждое действие на этом контроллере будет проверено на роль администратора.

1 голос
/ 08 ноября 2011

Если вы пометите контроллер атрибутом, все методы действий в контроллере будут ограничены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...