Request.IsAuthenticated如何工作?

MSDN代码示例说明:以下代码示例使用IsAuthenticated属性来确定当前请求是否已通过身份validation。 如果没有通过身份validation,请求将被redirect到另一个页面,用户可以在其中input凭据到Web应用程序中。 这是在应用程序的默认页面中使用的常用技术。

这是伟大的,但没有细节或任何东西…

究竟是什么检查? 我如何设置它为真?

多走一步:在哪里可以find更详细的文档?

感谢Google,我发现@keyboardP的caching版本是在他的回答中引用的。 由于原来的链接被破坏,我在这里张贴这个答案/张贴作为别人的参考(2012-12-06)。

原始问题 ,下面的答案是指:

我有一个基于表单的应用程序,让我适合。 我注意到,在一个IsAuthenticated属性为True的地方,现在是错误的,而且没有按预期工作。 我想知道如果我有一个无效的设置?

任何人都可以告诉我什么设置IsAuthenticated属性为真 – 什么样的标准login。

通过丹尼尔肯特:

Request.IsAuthenticated不仅适用于表单身份authentication – 无论使用何种types的authentication(Windows,Passport,Forms或我们自己的定制scheme)

HttpRequest.IsAuthenticated将在请求的用户进行身份validation时为true。 本质上,这个属性提供了与Context.User.Identity.IsAuthenticated相同的信息。

在请求开始时, Context.User.Idenity包含一个带有空用户名的GenericIdentity 。 此对象的IsAuthenticated属性将返回false因此Request.IsAuthenticated将为false 。 当身份validation模块处理Application_AuthenticateRequest事件并成功validation用户时,它将使用新的IIdentity对象replaceContext.User.IdentityGenericIdentity ,该对象将从其IsAuthenticated属性返回trueRequest.IsAuthenticated将返回true

在表单身份validation的情况下,表单身份validation模块使用身份validationCookie中包含的encryption的身份validation票证来validation用户身份。 一旦完成了这个操作,它将用一个从其IsAuthenticated属性返回TrueFormsIdentity对象replaceContext.User.IdentityGenericIdentity

所以,将IsAuthenticated设置为true实际上与login不同。正如Jeff所说,当身份validation票据生成并作为cookie发送到客户端时,login到表单身份validation会发生。 ( RedirectFromLoginPageSetAuthCookie )我们正在谈论与IsAuthenticated是validation每个页面请求发生。 login发生在用户input凭证并发出票据时,每次请求都会进行身份validation。

丹尼尔·肯特在这里有一个非常详细的post。 (片段)

Request.IsAuthenticated不仅适用于表单身份authentication – 无论使用何种types的authentication(Windows,Passport,Forms或我们自己的定制scheme)

HttpRequest.IsAuthenticated将在请求的用户进行身份validation时为true。 本质上,这个属性提供了与Context.User.Identity.IsAuthenticated相同的信息。