繁体   English   中英

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

[英]Where is HttpContext.User property set initially?

HttpContext具有处理IPrincipal类型的User属性。 从MS的文档中,我知道该属性可能是由诸如WindowsAuthenticationModuleFormsAuthenticationModule之类的Http模块设置的,但是,例如,这是WindowsAuthenticationModule的代码:

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

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

  1. IIS对客户端进行身份验证(作为匿名用户或身份验证用户,如它所配置的)后,它将把安全令牌传递给ASP.NET。 无论如何,我们的应用程序将此令牌包装在WindowsIdentityWindowsPrincipal对象中。 它发生在身份验证模块开始实施之前。 这是真的?

  2. 如果1为true,则HttpContext.User属性最初设置在哪里?

  3. 如果1为true,则HttpContext.User为null时? 我想可能是因为我配置了Web.config:

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

我对吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM