Как работает Request.IsAuthenticated?
-
18-09-2019 - |
Вопрос
Пример описания кода MSDN:Следующий пример кода использует свойство IsAuthenticated, чтобы определить, был ли аутентифицирован текущий запрос.Если он не прошел проверку подлинности, запрос перенаправляется на другую страницу, где пользователи могут ввести свои учетные данные в веб-приложение.Это распространенный метод, используемый на странице по умолчанию для приложения.
Это здорово, но без деталей или чего-то еще...
На что именно он проверяет?Как мне установить для него значение true?
Пройдите лишнюю милю:Где я мог бы найти более подробную документацию по этому поводу?
Решение
Благодаря Google я нашел кэшированную версию сообщения, на которое ссылается @keyboardP в его ответ.Я публикую этот ответ / сообщение здесь в качестве ссылки для других, поскольку исходная ссылка не работает (2012-12-06).
Оригинальный вопрос к которому относится приведенный ниже ответ:
У меня есть приложение на основе форм, которое вызывает у меня приступы.Я заметил, что в местоположении, где свойство IsAuthenticated имело значение True, теперь оно стало false и работало не так, как ожидалось.Мне интересно, есть ли у меня недопустимая настройка??
Кто-нибудь может сказать мне, что устанавливает для свойства IsAuthenticated значение True - что определяет вход в систему.
Ответ Дэниела Кента:
Request.IsAuthenticated
предназначен не только для аутентификации в формах - он действителен
независимо от того, какой тип аутентификации используется (Windows, Passport,
Forms или наша собственная пользовательская схема)
HttpRequest.IsAuthenticated
будет иметь значение true, когда пользователь, делающий запрос
прошел аутентификацию.По сути, это свойство предоставляет ту же самую
информацию, что и Context.User.Identity.IsAuthenticated
.
В начале запроса, Context.User.Idenity
содержит GenericIdentity
с нулевым именем пользователя.В IsAuthenticated
свойство для этого объекта будет
возвращать false
итак Request.IsAuthenticated
будет false
.Когда модуль аутентификации
обрабатывает Application_AuthenticateRequest
событие и
успешно аутентифицирует пользователя, оно заменяет GenericIdentity
в
Context.User.Identity
с новым IIdentity
объект, который вернет true
от
его IsAuthenticated
собственность. Request.IsAuthenticated
затем вернется true
.
В случае аутентификации Forms модуль аутентификации forms использует
зашифрованный билет аутентификации, содержащийся в файле cookie аутентификации
для аутентификации пользователя.Как только он сделает это, он заменяет
GenericIdentity
в Context.User.Identity
с помощью FormsIdentity
объект, который
возвращает True
из своего IsAuthenticated
собственность.
Итак, настройка IsAuthenticated
Для true
на самом деле это отличается от входа в систему.Как говорит
Джефф, вход в систему аутентификации forms происходит, когда генерируется билет аутентификации
и отправляется клиенту в виде файла cookie.(RedirectFromLoginPage
или SetAuthCookie
) О чем мы говорим с
IsAuthenticated
это аутентификация, которая происходит при каждом запросе страницы.Вход в систему происходит, когда пользователь вводит свои учетные данные и получает выданный билет
аутентификация выполняется с каждым запросом.
Другие советы
Там есть довольно подробный пост Дэниела Кента здесь.(Фрагмент)
Запрос.IsAuthenticated - это не только проверка подлинности форм - это допустимо независимо от того, какой тип используется проверка подлинности (Windows, Паспорт, формы или наша собственная пользовательская схема)
HttpRequest.IsAuthenticated будет иметь значение true, когда пользователь, делающий запрос прошел аутентификацию.По сути, это свойство предоставляет ту же информацию, что и Context.User.Identity.Проходит проверку подлинности.