MSDN 代码示例说明:以下代码示例使用 IsAuthenticated 属性来确定当前请求是否已经过身份验证。如果尚未通过身份验证,则请求将重定向到另一个页面,用户可以在该页面将其凭据输入 Web 应用程序。这是在应用程序的默认页面中使用的常用技术。
这很棒,但没有细节或任何东西......
它到底在检查什么?如何将其设置为 true?
加倍努力:我在哪里可以找到更详细的文档?
MSDN 代码示例说明:以下代码示例使用 IsAuthenticated 属性来确定当前请求是否已经过身份验证。如果尚未通过身份验证,则请求将重定向到另一个页面,用户可以在该页面将其凭据输入 Web 应用程序。这是在应用程序的默认页面中使用的常用技术。
这很棒,但没有细节或任何东西......
它到底在检查什么?如何将其设置为 true?
加倍努力:我在哪里可以找到更详细的文档?
感谢 Google,我在他的回答中找到了 @keyboardP 所指帖子的缓存版本。由于原始链接已损坏(2012-12-06),因此我在此处发布该答案/帖子作为其他人的参考。
我有一个适合我的基于表单的应用程序。我注意到,在 IsAuthenticated 属性为 True 的位置,它现在为 false 并且没有按预期工作。我想知道我是否有无效的设置?
谁能告诉我是什么将 IsAuthenticated 属性设置为 True - 什么构成登录。
丹尼尔肯特的回答:
Request.IsAuthenticated
不仅适用于表单身份验证 - 无论使用哪种类型的身份验证(Windows、Passport、Forms 或我们自己的自定义方案),它都是有效的
HttpRequest.IsAuthenticated
当发出请求的用户已通过身份验证时,将为真。本质上,此属性提供与 相同的信息Context.User.Identity.IsAuthenticated
。
在请求开始时,Context.User.Idenity
包含GenericIdentity
带有空用户名的 a。该IsAuthenticated
对象的属性将返回false
,因此Request.IsAuthenticated
将是false
。当身份验证模块处理Application_AuthenticateRequest
事件并成功验证用户身份时,它会将GenericIdentity
in
替换为将从其属性返回Context.User.Identity
的新IIdentity
对象。然后将返回。true
IsAuthenticated
Request.IsAuthenticated
true
在 Forms 身份验证的情况下,forms 身份验证模块使用身份验证 cookie 中包含的加密身份验证票证对用户进行身份验证。完成此操作后,它会将
GenericIdentity
in替换为从其属性返回Context.User.Identity
的FormsIdentity
对象。True
IsAuthenticated
因此,设置IsAuthenticated
为true
实际上与登录不同。正如 Jeff 所说,登录到表单身份验证发生在生成身份验证票并将其作为 cookie 发送到客户端时。(RedirectFromLoginPage
或SetAuthCookie
)我们谈论的
IsAuthenticated
是每个页面请求发生的身份验证。登录发生在用户输入他们的凭据并获得票证时,每个请求都会进行身份验证。
Daniel Kent这里有一篇非常详细的帖子。(片段)
Request.IsAuthenticated 不仅适用于表单身份验证 - 无论使用哪种类型的身份验证(Windows、Passport、Forms 或我们自己的自定义方案),它都是有效的
当发出请求的用户已通过身份验证时,HttpRequest.IsAuthenticated 将为真。本质上,此属性提供与 Context.User.Identity.IsAuthenticated 相同的信息。
反编译HttpRequest IsAuthenticated,看起来是这样的
public bool IsAuthenticated {
get {
return(_context.User != null
&& _context.User.Identity != null
&& _context.User.Identity.IsAuthenticated);
}
}
第 1373 行 https://referencesource.microsoft.com/#system.web/HttpRequest.cs