我需要一些帮助。如何访问当前经过身份验证的用户/ ClaimsPrincipal。在过去,我会使用HttpContext.Current,但现在看来它似乎是错误的。
答案 0 :(得分:11)
使用OWIN,可以从OWIN上下文的Authentication.User属性中找到用户。
OwinContext context = Request.GetOwinContext();
ClaimsPrinicipal user = context.Authentication.User;
// do stuff with user.
Brock Allen有post on using cookie authentication with OWIN。
答案 1 :(得分:3)
如果您使用的是Web Api 2,那么您现在应该使用RequestContext.Principal
来满足任何身份检查/分配需求。
答案 2 :(得分:0)
您想在什么情况下访问它?我将从发布OAuth2令牌的Web API服务的角度回答,因为这就是我刚刚编程的事情。如果那不是您的情况,请告诉我们您的具体情况。
如果您需要经过身份验证的用户,以便您可以发出令牌,并且已覆盖OAuthAuthorizationServerProvider
,则可以在context.Request.User
中找到它,其中context
是其中的参数重写方法。
在继承自ApiController
的类中(在ASP.NET Web API中),您可以检查this.User
。这将是您放入OAuth2令牌的ClaimsPrincipal
。