Авторизовать фильтры против фильтров действий - PullRequest
5 голосов
/ 25 июня 2010

Я использую .NET MVC2 для моего приложения. Я хочу получить пользовательскую авторизацию для своих действий. Я немного погуглил и, кажется, есть два варианта.

  • Реализация логики в onActionExecuting в пользовательском фильтре действий, см. Этот пост
  • Подкласс авторизует атрибут или реализует интерфейс Iauthorization и помещает мою логику туда

Мой вопрос здесь заключается в том, какая техника предпочтительнее с плюсами и минусами использования каждой техники

отредактировано: Более того, я могу переопределить onActionExecuting и onAuthorization в моем базовом контроллере, что дает мне преимущество прямого доступа к переменным контроллера.

1 Ответ

4 голосов
/ 09 ноября 2011

Несмотря на то, что оба варианта в порядке, лучше создать подкласс AuthorizeAttribute по следующим причинам:

  1. Разделение задач.
  2. MVC предоставляет атрибут AuthorizeAttribute для этой цели (не сражайтесьфреймворк).
  3. Фильтр авторизации запускается первым, а не перед другими фильтрами (для Pro ASP.NET MVC3 Framework, стр. 431).Это гарантирует, что ненужный код не будет выполняться, если неавторизованный пользователь нажмет на ваш контроллер / действие.
...