0

HttpContext.Current.User 何时何地从 HttpContext.Current.Request.Cookies 中读取?

我已经开始查看 ASP.NET MVC 5 源代码http://aspnetwebstack.codeplex.com/并且无法弄清楚第一次设置主体的位置。

4

2 回答 2

2

如果您使用联合身份验证,则SessionAuthenticationModule使用其配置CookieHandler将 cookie 反序列化为SessionSecurityToken. 然后它使用令牌为用户创建一个ClaimsPrincipal。然后ClaimsPrincipal将其用于设置Thread.CurrentPrincipalHttpContext.User属性。此过程发生在ASP.NET 管道的步骤AuthenticateRequest和步骤中。PostAuthenticateRequest由于它是在 ASP.NET 管道中完成的,我怀疑你会在 MVC 源代码中找到它。

您可以在MSDNSessionAuthenticationModule上的此处找到更多信息。

这是一篇关于 FormsAuth 和 FedAuth 的好文章。它解释了所有位如何在 ASP.NET 管道中组合在一起。

于 2013-11-13T04:11:30.780 回答
0

我找错地方了。身份验证现在使用 OWIN 中间件。这个博客很有用。源代码位于一个名为 katana 的项目中。源代码在这里。这是官方的 asp.net 博客文章

简而言之。Owins 是处理 http 请求的新方法。owins 请求通过处理请求的“中间件”管道传递。katana 项目(上图)中的 CookieAuthenticationMiddleware 负责解码身份验证 cookie。

于 2013-11-13T07:35:19.687 回答