ASP.NET Forms Authentication - PullRequest
       8

ASP.NET Forms Authentication

1 голос
/ 22 февраля 2011

У меня есть следующая конфигурация проверки подлинности с помощью форм ASP.NET:

<system.web>
  <authentication mode="Forms">
    <forms name="MembershipCookie" 
           loginUrl="Login.aspx" 
           protection="All" 
           timeout="525600" 
           slidingExpiration="true" 
           enableCrossAppRedirects="true" 
           path="/">
    </forms>
  </authentication>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>
<location path="Home.aspx">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location

Если анонимный пользователь заходит на сайт и запрашивает home.aspx, если ему будет отказано в доступе и он будет отправлен на страницу Login.aspx, потому чтопервое правило <deny users="?" /> будет соответствовать и дальнейшая обработка будет остановлена?

Сайт работает на IIS7.5, ASP.NET 4.0, а пул приложений настроен для работы в режиме интегрированного конвейера.

Обновление:

Причина этого вопроса состояла в том, чтобы проверить правильность моего понимания поведения проверки подлинности с помощью форм в ASP.NET 4.0 (которое было действительно правильным).Существует связанный вопрос, который описывает, что похоже на ошибку в исправлении (которое также включено в Windows 2008R2 SP1) - KB980368:

ASP.NET 2.0 и 4.0, кажется,обрабатывать корневой URL по-разному в проверке подлинности с помощью форм

Ответы [ 2 ]

3 голосов
/ 22 февраля 2011

Если пользователь обращается к Home.aspx, он будет использовать раздел конфигурации для Home.aspx, заданный <location />, и, следовательно, пользователь не будет выгнан в Login.aspx.

2 голосов
/ 22 февраля 2011

Если пользователь получит доступ к Home.aspx, то будет применено второе правило, т.е.

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

. Здесь следует отметить следующее: * говорит, что любой авторизованныйпользователь (которому назначена какая-либо роль или нет) может получить доступ к странице, но ? сообщает неавторизованному пользователю не удалось получить доступ к странице.

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