Подтвердить что ты не робот

Как работает Request.IsAuthenticated?

Пример описания кода MSDN: В следующем примере кода используется свойство IsAuthenticated, чтобы определить, прошел ли текущий запрос. Если он не был аутентифицирован, запрос перенаправляется на другую страницу, где пользователи могут вводить свои учетные данные в веб-приложение. Это общий метод, используемый на странице по умолчанию для приложения.

Это здорово, но не детали или что-то еще...

Что именно он проверяет? Как установить значение true?

Идите лишнюю милю: Где я могу найти более подробную документацию об этом?

4b9b3361

Ответ 1

Благодаря Google, я нашел кэшированную версию сообщения @keyboardP в его ответе. Я размещаю этот ответ/сообщение здесь как ссылку для других, так как исходная ссылка не работает (2012-12-06).

Оригинальный вопрос, на который ниже приведен ответ:

У меня есть приложение на основе форм, которое дает мне возможность. Я заметил, что в место, где свойство IsAuthenticated было True, теперь false, и он работал не так, как ожидалось. Мне интересно, есть ли у меня неверное значение?

Может ли кто-нибудь сказать мне, что устанавливает свойство IsAuthenticated в True - что constitues logging in.

Ответа на этот вопрос Daniel Kent:

Request.IsAuthenticated не только для аутентификации форм - это действительно независимо от того, какой тип аутентификации используется (Windows, Passport, Формы или наша собственная пользовательская схема)

HttpRequest.IsAuthenticated будет истинным, когда пользователь, выполнивший запрос была аутентифицирована. По сути, это свойство обеспечивает то же самое информации как Context.User.Identity.IsAuthenticated.

В начале запроса Context.User.Idenity содержит GenericIdentity с нулевым именем пользователя. Свойство IsAuthenticated для этого объекта будет return false, поэтому Request.IsAuthenticated будет false. Когда модуль аутентификации обрабатывает событие Application_AuthenticateRequest и успешно завершает аутентификацию пользователя, он заменяет GenericIdentity в Context.User.Identity с новым объектом IIdentity, который вернет true из его свойство IsAuthenticated. Request.IsAuthenticated затем вернет true.

В случае проверки подлинности форм используется модуль проверки подлинности форм зашифрованный билет аутентификации, содержащийся в файле cookie аутентификации для аутентификации пользователя. После этого он заменяет GenericIdentity в Context.User.Identity с объектом FormsIdentity, который возвращает true из своего свойства IsAuthenticated.

Итак, установка IsAuthenticated в true на самом деле отличается от входа в систему. As Джефф говорит, что вход в систему проверки подлинности происходит, когда аутентификационный билет генерируется и отправляется клиенту как файл cookie. (RedirectFromLoginPage или SetAuthCookie) Что мы говорим с IsAuthenticated - это аутентификация, которая происходит с каждым запросом страницы. Вход в систему происходит, когда пользователь вводит свои учетные данные и выдается билет, проверка подлинности происходит с каждым запросом.

Ответ 2

Здесь довольно подробное сообщение Daniel Kent здесь. (Отрывок)

Request.IsAuthenticated - это не только для аутентификации форм - это действует независимо от того, какой тип используется аутентификация (Windows, Паспорт, формы или собственный заказ схема)

HttpRequest.IsAuthenticated будет true, когда пользователь делает запрос была аутентифицирована. По существу, это свойство обеспечивает тот же информации как Context.User.Identity.IsAuthenticated.