Гибрид аутентификации Windows и аутентификации с помощью форм в ASP.NET MVC 4

У нас есть приложение для интрасети ASP.NET MVC 4. Мы используем проверку подлинности Windows, и этот аспект работает нормально. Используются учетные данные пользователя, и мы можем получить доступ к этим учетным данным из веб-приложения.

Однако нам действительно нужен гибридный режим. Мы хотим получить учетные данные пользователя из браузера, но мы также хотим убедиться, что пользователь находится в базе данных нашего приложения. Если пользователь находится в базе данных, он может просто продолжить. Если нет, мы хотим перенаправить их на страницу с запросом альтернативных учетных данных. То, что я делаю сейчас, вGlobal.asax.csУ меня естьApplication_AuthenticateRequest метод, и я проверяю, аутентифицирован ли пользователь. Если они есть, и информация об их файлах cookie не отражает того факта, что они вошли в систему, я регистрирую их и настраиваю некоторые файлы cookie с информацией о пользователе. Если они не аутентифицированы, я перенаправляю их на страницу входа. Мы не можем использовать роли AD по причинам, связанным с политикой компании, поэтому нам необходимо использовать базу данных для дополнительной аутентификации.

Я догадываюсьApplication_AuthenticateRequest это не место для этого, но, возможно, это так. Но нам в основном нужно место для фильтрации запросов на аутентификацию. Но дополнительно эта реализация приводит меня к другой проблеме:

У нас есть определенные URL в нашем приложении, которые разрешают анонимный доступ. Я добавил<location> теги к web.config для них. Проблема в том, что когда на них совершаются анонимные звонки,Application_AuthenticateRequest и пытается войти в систему пользователя в БД. Теперь я могу добавить код вApplication_AuthenticateRequest обрабатывать эти URL-адреса, и это в настоящее время мой план, но если я напишу иApplication_AuthenticateRequest это не то место, где я могу это сделать, тогда я бы лучше понял это сейчас, чем позже.

Ответы на вопрос(1)

Ваш ответ на вопрос