HttpContext.Current.User 何时何地从 HttpContext.Current.Request.Cookies 中读取?
我已经开始查看 ASP.NET MVC 5 源代码http://aspnetwebstack.codeplex.com/并且无法弄清楚第一次设置主体的位置。
HttpContext.Current.User 何时何地从 HttpContext.Current.Request.Cookies 中读取?
我已经开始查看 ASP.NET MVC 5 源代码http://aspnetwebstack.codeplex.com/并且无法弄清楚第一次设置主体的位置。
如果您使用联合身份验证,则SessionAuthenticationModule
使用其配置CookieHandler
将 cookie 反序列化为SessionSecurityToken
. 然后它使用令牌为用户创建一个ClaimsPrincipal
。然后ClaimsPrincipal
将其用于设置Thread.CurrentPrincipal
和HttpContext.User
属性。此过程发生在ASP.NET 管道的步骤AuthenticateRequest
和步骤中。PostAuthenticateRequest
由于它是在 ASP.NET 管道中完成的,我怀疑你会在 MVC 源代码中找到它。
您可以在MSDNSessionAuthenticationModule
上的此处找到更多信息。
这是一篇关于 FormsAuth 和 FedAuth 的好文章。它解释了所有位如何在 ASP.NET 管道中组合在一起。
我找错地方了。身份验证现在使用 OWIN 中间件。这个博客很有用。源代码位于一个名为 katana 的项目中。源代码在这里。这是官方的 asp.net 博客文章
简而言之。Owins 是处理 http 请求的新方法。owins 请求通过处理请求的“中间件”管道传递。katana 项目(上图)中的 CookieAuthenticationMiddleware 负责解码身份验证 cookie。