CurrentUser / ClaimsPrincipal

3

我需要一些帮助。我如何获取当前已验证的用户/ClaimsPrincipal的访问权限?在以前,我会使用HttpContext.Current,但现在似乎有些不对。

3个回答

11

通过OWIN,可以在OWIN上下文的Authentication.User属性中找到用户。

OwinContext context = Request.GetOwinContext();
ClaimsPrinicipal user = context.Authentication.User;
// do stuff with user.

Brock Allen在他的博客中分享了如何使用OWIN进行cookie认证


2
如果您已经添加了用户的个人资料,如何访问包含所有个人资料信息的用户对象?或者另一种问法是,您的方法获取了一个“ClaimsPrincipal”对象。如何获取完全填充的“IdentityUser”对象?我知道可以通过UserManager获取它,但我不想每次需要用户时都调用该方法。那是唯一的方法吗? - Mike Becatti

3
如果你正在使用Web Api 2,那么你现在应该使用RequestContext.Principal来满足任何身份验证/分配的需求。

0
在什么情境下你想要访问它?我将从一个发出OAuth2令牌的Web API服务的角度进行回答,因为这正好是我最近编写的内容。如果这不是您的情况,请提供您的具体要求。
如果您想获取已验证用户以便发出令牌,并且您已经覆盖了OAuthAuthorizationServerProvider,您可以在覆盖方法的参数context中找到它,在context.Request.User中。
在继承自ApiController的类(在ASP.NET Web API中),您可以检查this.User。那将是您放入OAuth2令牌中的ClaimsPrincipal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接