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.IsAuthenticatedfalse. 。当身份验证模块处理 Application_AuthenticateRequest 事件并成功验证用户替代了 GenericIdentityContext.User.Identity 与一个新的 IIdentity 将返回的对象 true 从 其 IsAuthenticated 财产。 Request.IsAuthenticated 然后将返回 true.

对于 Forms 身份验证,Forms 身份验证模块使用 身份验证 Cookie 中包含的加密身份验证票证 对用户进行身份验证。完成此操作后,它将替换GenericIdentityContext.User.Identity 与一个 FormsIdentity 对象 返回 True 从它的 IsAuthenticated 财产。

所以,设置 IsAuthenticatedtrue 其实和登录是不一样的。如 Jeff 说,登录表单身份验证时 生成身份验证票证并将其作为 cookie 发送到客户端。(RedirectFromLoginPage 或者 SetAuthCookie)我们正在谈论的是什么IsAuthenticated 是每个页面请求时发生的身份验证。当用户输入其凭据并被授予 票证,身份验证发生在每个请求上。

其他提示

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

  

Request.IsAuthenticated是   不只是形式authentciation - 它   是有效的,无论是什么类型的   验证正在使用(在Windows,   护照,表格或自己的自定义   方案)

     

HttpRequest.IsAuthenticated将   真当用户发出请求   已经被验证。实质上,   这个属性提供了相同的   作为信息   Context.User.Identity.IsAuthenticated。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top