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

本文关键字:设置 在哪里 User 属性 HttpContext | 更新日期: 2023-09-27 17:55:53

HttpContext有一个处理IPrincipal类型的User属性。从 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 为 true,则 HttpContext.User 属性最初设置在哪里?

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

    <身份验证模式 />

我说的对吗?

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

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