ASP.NET MVC - защита действий по умолчанию (без указания атрибутов для каждого действия) - PullRequest
0 голосов
/ 02 ноября 2011

До сих пор я видел главный совет по применению правил авторизации, заключающийся в добавлении различных атрибутов к действиям. Что хорошо, если большинство ваших действий не требует авторизации.

Однако мое приложение полностью существует за формой входа в систему, поэтому для меня имеет смысл иметь все действия, требующие авторизации по умолчанию.

Есть ли способ сделать это без необходимости аннотировать каждый метод?

Ответы [ 3 ]

3 голосов
/ 02 ноября 2011
  1. Вы можете диктовать логин через web.config .
  2. Вы можете получить все ваши контроллеры из общего базового контроллера, который либо имеет атрибут над ним, либо переопределить метод OnAuthorization.
  3. Реализация Application_AuthenticateRequest в Global.asax.
2 голосов
/ 02 ноября 2011

Если вы используете ASP.NET MVC 3, вы можете зарегистрировать глобальный фильтр действий авторизации .Если нет, вы можете определить базовый класс контроллеров, который будет украшен атрибутом Authorize, и тогда все ваши контроллеры будут производными от этого базового контроллера.

0 голосов
/ 02 ноября 2011

Добавьте раздел авторизации в ваш файл web.config

<authorization>
      <deny users="?"/>
  </authorization>

, а также укажите адрес для входа в систему

<authentication mode="Forms">
  <forms loginUrl="~/Logon" timeout="2880" />
</authentication>
...