HttpContext有一个 User 属性,用于处理IPrincipal类型。 从MS的文档中我知道该属性可能由Http模块设置,例如 WindowsAuthenticationModule 或 FormsAuthenticationModule 但是,例如,这是 WindowsAuthenticationModule :
的代码 WindowsPrincipal user = context.User as WindowsPrincipal;
if (user != null) {/* code... */}
有趣的是,如果条件为false(用户为null或用户具有其他类型,而不是WindowsPrincipal),则 WindowsAuthenticationModule 返回控件(对于IIS的嵌入模式管道)。 我有以下问题:
在IIS对客户端进行身份验证(作为匿名用户或经过身份验证的用户,因为它已配置)后,它会将安全令牌传递给ASP.NET。我们的应用程序在任何情况下都会在 WindowsIdentity 和 WindowsPrincipal 对象中包含此标记。它发生在认证模块开始实施之前。 这是真的吗?
如果1为真,那么最初设置的HttpContext.User属性在哪里?
如果1为真,那么当HttpContext.User为空时?我想如果我配置Web.config可能就是这样:
<身份验证模式=“无”/>
我是对的吗?
答案 0 :(得分:0)
在大多数情况下,在用户进行身份验证(非匿名)时会设置HttpContext.User。我知道在FormsAuthentication中,这发生在FormsAuthentication.SetAuthCookie
上,当客户端注销并清除cookie时,HttpContext.User设置为null