Произошло ли изменение в способе авторизации / аутентификации asp.net для файлов, не относящихся к asp.net? - PullRequest
0 голосов
/ 07 марта 2011

Всякий раз, когда я работал с аутентификацией / авторизацией asp.net в прошлом, я могу помнить, что она никогда не использовалась для защиты файлов .htm .js .css (фактически, любой файл, который не обрабатывается asp.net isapi).dll).

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

У меня вопрос, было ли мое первоначальное предположение о том, как неправильно обрабатываются файлы не asp.net?Если нет, когда это изменение произошло?Произошло ли изменение в сервере разработки VS2010, что теперь означает, что все файлы обрабатываются asp.net?

Большое спасибо.

Изменить, чтобы добавить:

I 'Мы только что заметили, что когда я запускаю свой проект с локального сервера IIS, файлы не asp.net (например, изображения и .js) НЕ защищены.Однако при запуске с сервера разработки VS они есть.Очевидно, что это связано с различиями в конфигурации между IIS и сервером разработки.Это приводит меня к другому вопросу .. Можно ли настроить сервер VS dev?

Ответы [ 2 ]

1 голос
/ 09 марта 2011

С тех пор я узнал немного больше информации по этой проблеме.

IIS 7 в режиме интегрированного конвейера действительно обрабатывает запросы ко всем файлам через тот же канал, что и содержимое asp.net, что означает, что поведение Авторизации файлов не asp.net изменится.

Однако, чтобы поддерживать обратную совместимость, авторизация была настроена с предварительным условием, которое будет игнорировать все, что не является содержимым asp.net. Это создает впечатление, что поведение не изменилось.

Если вы хотите изменить это поведение и защитить содержимое, не относящееся к asp.net, вы можете переопределить это предварительное условие, добавив следующее в файл web.config.

<system.webServer>
  <modules>
    <remove name="FormsAuthenticationModule" />
    <add name="FormsAuthenticationModule" 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" />
  </modules>
</system.webServer>

Это эффективно удаляет модули Http вместе с их предварительным условием и повторно добавляет их без него.

Cassini настроен на использование интегрированного конвейерного режима и не имеет предварительного условия обратной совместимости. Это означает, что если вы используете dev-сервер VS2010 с проверкой подлинности с помощью форм, у вас не будет выбора в этом вопросе, контент не asp.net всегда будет защищен.

0 голосов
/ 07 марта 2011

Нет, не было.Это то, как это работает по умолчанию в IIS 6 (более старой версии) и в IIS7 + с классическим конвейером, но его можно изменить, перенаправив весь контент через aspnet isapi.

Если вы используете интегрированный конвейер в IIS7 + или VS Development WebСервер (Cassini) все запросы направляются через asp.net аутентификацию.

...