Как проверить, была ли проверка пользователя (FormsAuthentication) с использованием файлов cookie?
У меня проблема с проверкой (аутентификацией) в моем приложении ASP.NET - я использую FormsAuthentication с включенными cookie-файлами, однако по соображениям безопасности я вынужден ТАКЖЕ использовать другой, внешний источник авторизации (который на основе комбинации имени пользователя и пароля дает пользователю " идентификатор сессии")
Приложение работает нормально, когда пользователь входит в систему, используя свои учетные данные для имени пользователя и пароля (таким образом, получает sessionID). Однако из-за того, что куки включены, страницу входа можно пропустить (пользователь перенаправлен на default.aspx), и он не получит правильный sessionID.
У меня вопрос, есть ли возможность проверить, если пользователь
а) пришел со страницы входа (таким образом, был перенаправлен на default.aspx)
ИЛИ ЖЕ
б) FormAuthentication была выполнена на основе данных cookie, а не имени пользователя / пароля
2 ответа
Да, вы можете проверить, с какой страницы пришел пользователь, используя "request.UrlReferrer.ToString", и сравнить ее с URL-адресом вашей страницы входа.
Предполагая, что вы перенаправляете на страницу default.aspx после того, как пользователь входит в систему (например, загрузка страницы теперь включает куки-файлы аутентификации от перенаправленного клиента), вы будете знать, аутентифицированы ли они с помощью global.asax.cs "Событие Application_AuthenticateRequest" global.asax.cs.:
protected void Application_AuthenticateRequest(Object oSender, EventArgs eA)
{
// Wire up authenticated principal with user information.
if (this.Request.IsAuthenticated == true)
{
// do something with this.User.Identity.Name to map to a "sessionid"
}
}
Вы спрашиваете об определении, вошли ли они в систему и приземлились дома как перенаправленный пользователь, или они пришли домой (или любой другой вид) непосредственно с помощью сохраненного в браузере файла cookie, но я думаю, что это не имеет значения. Если вы храните дополнительный ключ аутентификации пользователя как часть обработки входа в систему, возможно, вам следует делать это в событии AuthenticateRequest для всех обращений к защищенным страницам. Примечание: это событие часто запускается (css-файлы, изображения и т. Д.). Вы можете игнорировать любые запросы, кроме.aspx.