最初HttpContext.User属性设置在哪里?

时间:2015-06-13 19:42:31

标签: c# asp.net asp.net-mvc authentication

HttpContext有一个 User 属性,用于处理IPrincipal类型。 从MS的文档中我知道该属性可能由Http模块设置,例如 WindowsAuthenticationModule FormsAuthenticationModule 但是,例如,这是 WindowsAuthenticationModule

的代码
 WindowsPrincipal user = context.User as WindowsPrincipal;
        if (user != null) {/* code... */}

有趣的是,如果条件为false(用户为null或用户具有其他类型,而不是WindowsPrincipal),则 WindowsAuthenticationModule 返回控件(对于IIS的嵌入模式管道)。 我有以下问题:

  1. 在IIS对客户端进行身份验证(作为匿名用户或经过身份验证的用户,因为它已配置)后,它会将安全令牌传递给ASP.NET。我们的应用程序在任何情况下都会在 WindowsIdentity WindowsPrincipal 对象中包含此标记。它发生在认证模块开始实施之前。 这是真的吗?

  2. 如果1为真,那么最初设置的HttpContext.User属性在哪里?

  3. 如果1为真,那么当HttpContext.User为空时?我想如果我配置Web.config可能就是这样:

    <身份验证模式=“无”/>

  4. 我是对的吗?

1 个答案:

答案 0 :(得分:0)

在大多数情况下,在用户进行身份验证(非匿名)时会设置HttpContext.User。我知道在FormsAuthentication中,这发生在FormsAuthentication.SetAuthCookie上,当客户端注销并清除cookie时,HttpContext.User设置为null