Как настроить проверку подлинности Windows только для одного маршрута в ASP.NET MVC на iis6? - PullRequest
2 голосов
/ 08 января 2009

Я занимаюсь разработкой веб-приложения, и мне нужно совместить проверку подлинности с помощью форм и Windows.

Подход, который я выбрал, заключается в следующем: метод аутентификации на всех веб-сайтах должен быть аутентифицирован для форм. Существует страница формы (~/home/Login) для входа через формы авторизации. Волшебство (и проблема) заключается в том, что только на одной странице (скажем, ~/Home/WinLogin) должен быть настроен метод auth для проверки подлинности windows. Эта страница используется для чтения HttpContext.User.Identity.Name для получения имени пользователя Windows.

Чего я не знаю, так это как настроить авторизацию на iis6 для одного конкретного маршрута?

Маршрут выглядит как ~/Home.ashx/WinLogin. Хорошо, но что тогда? Я попытался создать каталог Home.ashx в виртуальном каталоге и подкаталоге WinLogin. Но потом ~/Home.ashx/Login (с формой входа) перестал работать.

Поскольку на iis6 мы должны использовать обработчик ashx, кажется, что нет другого способа сделать это, кроме создания обычной веб-страницы ~/WinLogin.aspx, которая делает эту работу. Однако я хотел избежать этого и использовать только MVC.

Только для информации, как настроить iis7: IIS 7.0 Блог на стороне сервера Она не идеальна (Майк Володарский должен был создать модуль авторизации пользовательских форм), но он работает.

1 Ответ

2 голосов
/ 08 января 2009

Вы не можете выборочно установить аутентификацию Windows в IIS6, как в IIS7. Однако вы можете установить home.ashx для поддержки анонимного и аутентификации Windows; замените свойство HttpContext.User в случае / Login и используйте принцип windows в случае / WinLogin. Однако вы должны быть осторожны, так как ваш путь к коду учитывает тот случай, когда вы хотите, чтобы они использовали аутентификацию форм, но они предоставляют вам идентификатор Windows и игнорируют это.

...