ASP.NET MVC Urls и IIS встроенная проверка подлинности Windows - PullRequest
6 голосов
/ 17 июня 2009

У меня есть приложение ASP.NET MVC, полностью поддерживающее проверку подлинности с помощью форм. Однако есть один набор маршрутов (/ report /%), для которого мне нужно включить встроенную проверку подлинности Windows, поскольку эти страницы должны выдавать себя за текущего пользователя (по соображениям безопасности).

Если я установил для всего сайта встроенную аутентификацию Windows, это все работает, за исключением того, что Firefox запрашивает у пользователя имя пользователя / пароль дважды, когда они попадают на домашнюю страницу сайта (один раз для аутентификации Windows, затем снова для аутентификации форм), тогда как IE запрашивает только аутентификацию форм. Это нормально, и я знаю, что это стандартное поведение Firefox, однако, чтобы не раздражать пользователей, меня попросили ограничить требование проверки подлинности Windows только разделом / report / * сайта, поэтому они получают запрос только в том случае, если они идут на любую страницу в /report/%.

В ASP.NET WebForms это достаточно просто, поскольку есть физическая папка / папка для размещения конфигурации аутентификации, но в MVC этот URL-адрес является виртуальным, поэтому я не могу этого сделать. Кто-нибудь знает хороший способ сделать это? Я попытался создать страницу aspx «шлюза», через которую пользователи должны сначала пройти, прежде чем перенаправить на соответствующую страницу отчета, и хотя Firefox действительно запрашивает у пользователя свои учетные данные Windows в нужной точке, похоже, он не сохраняет отправка этих данных для последующих запросов на любую из страниц / report /%. Есть идеи? Был бы супер признателен!

1 Ответ

5 голосов
/ 22 июля 2009

Совсем недавно мне пришлось сделать что-то подобное. У меня было требование проверки подлинности с помощью форм для большинства моих приложений asp.net MVC, причем одна часть требовала проверки подлинности Windows.

В итоге я разбил свое веб-приложение на два проекта.

Первый проект был размещен в корне веб-сайта под IIS. Это была проверка подлинности с помощью форм.

Второй проект размещался в виртуальном каталоге того же веб-сайта. Это была проверка подлинности Windows.

Единственный компромисс в том, что вы можете получить URL-адрес / reports / reports /% (или как вы называете виртуальный каталог)

...