Angularjs User.Identity.GetUserId()和RequestContext.Principal.Identity.GetUserId()在WEB API控制器中返回NULL。使用基于令牌的身份验证

Angularjs User.Identity.GetUserId()和RequestContext.Principal.Identity.GetUserId()在WEB API控制器中返回NULL。使用基于令牌的身份验证,angularjs,asp.net-web-api,http-token-authentication,Angularjs,Asp.net Web Api,Http Token Authentication,我使用令牌来保护我的Web API网站,并从AngularJS客户端应用程序中使用该API 有了它,我就可以使用基于令牌的身份验证登录。我的问题是,我无法在Web API控制器中获取用户ID User.Identity.GetUserId()和RequestContext.Principal.Identity.GetUserId()都返回null 如何在ApiController中获取UserId?如果您已经有一个承载令牌,请在javascript中设置授权标头 var token = sess

我使用令牌来保护我的Web API网站,并从AngularJS客户端应用程序中使用该API

有了它,我就可以使用基于令牌的身份验证登录。我的问题是,我无法在Web API控制器中获取
用户ID

User.Identity.GetUserId()
RequestContext.Principal.Identity.GetUserId()
都返回
null


如何在
ApiController
中获取
UserId

如果您已经有一个承载令牌,请在javascript中设置授权标头

var token = sessionStorage.getItem(tokenKey);
var headers = {};
if (token) {
    headers.Authorization = 'Bearer ' + token;
}
然后,您应该在ajax请求中包含标题:

 $.ajax({
        type: 'GET',
        url: 'api/values/1',
        headers: headers
    }).done(function (data) {
        self.result(data);
    }).fail(showError);
最后,在控制器中,您可以通过以下方式获取用户id:

var userId = RequestContext.Principal.Identity.GetUserId();

有关更多信息,请参阅

您使用的是什么框架?ASP.NET身份?是的。身份2.0,MVC5。WEB APIUser.Identity.GetUserId()应返回当前登录用户的用户ID。在调用WebAPI时,您是否在授权标头中尝试使用登录用户(传递承载AuthToken)?已解决。。将AuthToken作为标头传递时出现问题。现在它运转良好。。谢谢…@RohitV请解释一下或分享一些代码片段,你是如何解决你的问题的,我也收到了同样的问题谢谢!