Аутентификация ASP.NET с ролями в интегрированном режиме IIS7 для статического содержимого - PullRequest
3 голосов
/ 13 июня 2009

Я экспериментирую со встроенным режимом аутентификации для статического контента в IIS7. Я следовал инструкциям в этой статье: http://aspnet.4guysfromrolla.com/articles/122408-1.aspx Работает нормально, если я разрешу / запретю доступ по статусу входа (как в статье). Однако я хочу разрешить / запретить доступ на основе ролей (используя встроенный в поставщик ролей ASP.NET). Когда я помещаю разрешающее правило для роли «Администратор» в web.config и запрещающее правило для всех других пользователей, я не могу получить доступ к статическим файлам, даже когда я вхожу в систему как администратор. В этой же папке содержится нестатический контент (страницы aspx), доступ к которому осуществляется очень хорошо на основе информации поставщика ролей.

Есть идеи?

Ответы [ 2 ]

5 голосов
/ 02 ноября 2010

Попробуйте добавить в свой блок <system.webServer> <modules> следующее:

<configuration>
  <system.webServer>
    <modules>
      <remove name="FormsAuthentication" />
      <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
      <remove name="UrlAuthorization" />
      <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
      <remove name="DefaultAuthentication" />
      <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" />
      <remove name="RoleManager" />
      <add name="RoleManager" type="System.Web.Security.RoleManagerModule" />
    </modules>
  </system.webServer>
</configuration>

Бит RoleManager является ключевым, и он не включен ни в один из онлайн-примеров, которые я смог найти. Без этого членство пользователя в роли не инициализируется для статического содержимого, поэтому авторизация на основе ролей всегда будет неудачной.

(Отказ от ответственности: я сам собрал это воедино на основании моего ограниченного понимания IIS, но, похоже, это работает.)

Редактировать (в ответ на ваш комментарий): Извините, я мало знаю о том, как RoleManager зависит от других модулей. Вы можете просмотреть конфигурацию IIS по умолчанию, посмотрев c:\Windows\System32\inetsrv\config\applicationHost.config (по крайней мере, это на моем компьютере с Windows Vista), чтобы увидеть порядок загрузки модулей (обратите внимание на использование managedHandler по умолчанию для ограничьте RoleManager нестатическим содержимым), а MSDN охватывает RoleManagerModule вместе с остальными модулями в пространстве имен System.Web.Security , поэтому вы, вероятно, сможете найти то, что вам нужно .

0 голосов
/ 10 июля 2009

Я бы сказал, что наиболее вероятным виновником является то, что статические файлы не обрабатываются ASP.NET, а остаются на усмотрение IIS.

Работает ли это, если вы добавили сопоставление сценария с подстановочными знаками?

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