Request.IsAuthenticated如何运作?

时间:2010-02-04 16:19:33

标签: c# asp.net httprequest

MSDN代码示例说明:以下代码示例使用IsAuthenticated属性来确定当前请求是否已经过身份验证。如果尚未通过身份验证,请求将重定向到另一个页面,用户可以在其中将凭据输入Web应用程序。这是应用程序默认页面中使用的常用技术。

这很棒,但没有细节或任何东西......

究竟在检查什么?如何将其设置为true?

加倍努力:我在哪里可以找到更详细的文档?

2 个答案:

答案 0 :(得分:58)

感谢Google,我在his answer找到了@keyboardP引用的帖子的缓存版本。由于原始链接已被破坏(2012-12-06),我在此处发布该答案/帖子作为其他人的参考。

Original question以下答案指的是:

我有一个基于表单的应用程序,让我适合。我注意到了,在 IsAuthenticated属性为True的位置,现在是 是的,并没有按预期工作。我想知道我是否有 设置无效??

任何人都可以告诉我什么将IsAuthenticated属性设置为True - 什么 登录的constitues。

Daniel Kent回答:

Request.IsAuthenticated不仅适用于表单验证 - 它是有效的 无论使用何种类型的身份验证(Windows,Passport, 表格或我们自己的定制方案)

当用户发出请求时,

HttpRequest.IsAuthenticated将为true 已经过身份验证。基本上,这个属性提供相同的 信息为Context.User.Identity.IsAuthenticated

在请求开始时,Context.User.Idenity包含GenericIdentity 使用空用户名。此对象的IsAuthenticated属性将 返回false以便Request.IsAuthenticatedfalse。当一个 身份验证模块处理Application_AuthenticateRequest事件和 successfuly验证用户替换GenericIdentity in Context.User.Identity新的IIdentity对象将返回true 它的IsAuthenticated财产。然后Request.IsAuthenticated将返回true

在Forms身份验证的情况下,表单身份验证模块使用 身份验证Cookie中包含的加密身份验证票证 验证用户。一旦它完成了这个,它就取代了 GenericIdentity中的Context.User.Identity FormsIdentity对象 从True属性返回IsAuthenticated

因此,将IsAuthenticated设置为true实际上与登录不同 杰夫说,登录表单身份验证时会发生 生成身份验证票证并将其作为cookie发送到客户端。 (RedirectFromLoginPageSetAuthCookie)我们在谈论什么 IsAuthenticated是每个页面请求发生的身份验证。 当用户输入他们的凭证并且被发出时,登录就会发生 票证,每次请求都会进行身份验证。

答案 1 :(得分:8)

丹尼尔肯特有一篇非常详细的文章here。 (片段)

  

Request.IsAuthenticated是   不仅仅是形式认证 - 它   无论什么类型的,都是有效的   正在使用身份验证(Windows,   护照,表格或我们自己的习俗   方案)

     

HttpRequest.IsAuthenticated将是   当用户发出请求时为true   已经过身份验证。实质上,   这家酒店提供相同的   信息为   Context.User.Identity.IsAuthenticated。