Проблема с авторизацией с IIS и MVC

Возникла проблема с настройками Авторизации. Сначала я получил:

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

Поэтому я запрещаю всем неизвестным пользователям и затем разрешаю им просматривать эти страницы:

<location path="Default.aspx">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

<location path="Public">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

Теперь к проблеме.. они могут получить доступ к Общим страницам и Default.aspx .. но не www.mydomain.com или www.mydomain.com/ .. поэтому www.mydmain.com/Default.aspx работает нормально. Так как заставить это работать?

1 ответ

Решение

Имейте в виду, что существует фундаментальная разница в защищенных ресурсах между WebForms и MVC. В WebForms ресурсы, которые вы пытаетесь защитить, - это сами страницы, и поскольку страницы существуют на диске по общеизвестному пути, вы можете использовать Web.config для их защиты. Однако в MVC ресурсы, которые вы пытаетесь защитить, на самом деле являются контроллерами и действиями, а не отдельными путями и страницами. Если вы попытаетесь защитить путь, а не контроллер, ваше приложение, скорее всего, будет уязвимо с точки зрения безопасности.

В MVC по умолчанию все контроллеры + действия доступны всем пользователям, как аутентифицированным, так и гостевым. Для защиты контроллеров или действий был предоставлен атрибут [Authorize]. См. http://www.asp.net/learn/mvc/ для получения дополнительной информации.

Короче говоря, похоже, что для вашего приложения вы хотите присвоить каждому контроллеру, кроме контроллера по умолчанию и публичного контроллера, атрибут [Authorize].

Другие вопросы по тегам