Request.IsAuthenticated 如何工作?
-
18-09-2019 - |
题
MSDN代码示例说明:以下代码示例使用 IsAuthenticated 属性来确定当前请求是否已通过身份验证。如果尚未经过身份验证,请求将重定向到另一个页面,用户可以在其中将其凭据输入到 Web 应用程序中。这是应用程序默认页面中使用的常见技术。
这很棒,但没有细节或任何东西......
它到底检查什么?我如何将其设置为 true?
多走一英里:我在哪里可以找到关于此的更详细的文档?
解决方案
感谢 Google,我找到了 @keyboardP 引用的帖子的缓存版本 他的回答. 。由于原始链接已损坏(2012-12-06),我在此发布该答案/帖子作为其他人的参考。
原问题 下面的答案指的是:
我有一个基于表单的应用程序,让我很不舒服。我注意到,在iSauthenticatiented属性是真实的位置,现在是错误的,并且没有按预期工作。我想知道我的设置是否无效?
谁能告诉我是什么将iSauthenticatiented属性设置为True的内容 - 构成登录的内容。
由网友 丹尼尔·肯特 提供的答案:
Request.IsAuthenticated
不仅是用于表单Authentciation - 无论使用哪种类型的身份验证(Windows,Passport,Forms或我们自己的自定义方案)都是有效的
HttpRequest.IsAuthenticated
当提出请求的用户已经过身份验证时,将是正确的。本质上,此属性提供了与 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
其实和登录是不一样的。如
Jeff 说,登录表单身份验证时
生成身份验证票证并将其作为 cookie 发送到客户端。(RedirectFromLoginPage
或者 SetAuthCookie
)我们正在谈论的是什么IsAuthenticated
是每个页面请求时发生的身份验证。当用户输入其凭据并被授予
票证,身份验证发生在每个请求上。
其他提示
有一个非常详细的职位由丹尼尔·肯特这里。 (片段)
Request.IsAuthenticated是 不只是形式authentciation - 它 是有效的,无论是什么类型的 验证正在使用(在Windows, 护照,表格或自己的自定义 方案)
HttpRequest.IsAuthenticated将 真当用户发出请求 已经被验证。实质上, 这个属性提供了相同的 作为信息 Context.User.Identity.IsAuthenticated。