MSDN代码示例说明:下面的代码示例使用IsAuthenticated属性来确定当前请求是否已通过身份验证。如果该请求尚未通过身份验证,则请求将被重定向到另一个页面,用户可以在该页面将其凭据输入到Web应用程序中。这是在应用程序的默认页面中使用的常用技术。
这是伟大的,但没有细节或任何东西。
它到底在检查什么?如何将其设置为true?
更进一步:我在哪里可以找到关于这方面的更详细的文档?
发布于 2012-12-06 16:40:10
多亏了谷歌,我在his answer中找到了post @keyboardP的缓存版本。我在这里发布这个答案/帖子,作为其他人的参考,因为原始链接已断开(2012-12-06)。
以下答案所指的 :
我有一个基于表单的应用程序,它让我很适合。我注意到,在IsAuthenticated属性为True的位置,它现在为false,并且不能按预期工作。我想知道我是否有一个无效的设置??
谁能告诉我是什么将IsAuthenticated属性设置为True--是什么构成了登录。
丹尼尔·肯特的答案:
Request.IsAuthenticated
不仅仅用于表单身份验证-无论使用哪种类型的身份验证(Windows、护照、表单或我们自己的自定义方案),它都是有效的。
当发出请求的用户已通过身份验证时,HttpRequest.IsAuthenticated
将为true。本质上,此属性提供与Context.User.Identity.IsAuthenticated
相同的信息。
在请求的开头,Context.User.Idenity
包含一个用户名为空的GenericIdentity
。此对象的IsAuthenticated
属性将返回false
,因此Request.IsAuthenticated
将为false
。当身份验证模块处理Application_AuthenticateRequest
事件并成功地对用户进行身份验证时,它将Context.User.Identity
中的GenericIdentity
替换为一个新的IIdentity
对象,该对象将从其IsAuthenticated
属性返回true
。然后,Request.IsAuthenticated
将返回true
。
在窗体身份验证的情况下,窗体身份验证模块使用身份验证cookie中包含的加密身份验证票证对用户进行身份验证。完成此操作后,它将Context.User.Identity
中的GenericIdentity
替换为FormsIdentity
对象,该对象从其IsAuthenticated
属性返回True
。
因此,将IsAuthenticated
设置为true
实际上与登录不同。正如Jeff所说,在生成身份验证票证并将其作为cookie发送给客户端时,就会登录到表单身份验证。(RedirectFromLoginPage
或SetAuthCookie
)我们谈论的IsAuthenticated
是针对每个页面请求进行的身份验证。登录发生在用户输入其凭据并获得票证时,每次请求时都会进行身份验证。
发布于 2010-02-04 16:31:32
丹尼尔肯特here有一篇非常详细的文章。(代码段)
Request.IsAuthenticated不仅仅用于表单身份验证-无论使用哪种类型的身份验证,它都是有效的(窗口、护照、表单或我们自己的自定义方案)
当发出请求的用户已通过身份验证时,HttpRequest.IsAuthenticated将为true。本质上,此属性提供与Context.User.Identity.IsAuthenticated.相同的信息
发布于 2021-08-31 18:56:41
反编译HttpRequest IsAuthenticated,看起来像这样
public bool IsAuthenticated {
get {
return(_context.User != null
&& _context.User.Identity != null
&& _context.User.Identity.IsAuthenticated);
}
}
137行https://referencesource.microsoft.com/#system.web/HttpRequest.cs
https://stackoverflow.com/questions/2201238
复制相似问题