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

时间:2016-07-11 05:09:20

标签: angularjs asp.net-web-api http-token-authentication

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

有了这个,我可以使用基于令牌的身份验证登录。我的问题是我无法在Web API控制器中获得UserId

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

如何在UserId中获取ApiController

1 个答案:

答案 0 :(得分:0)

如果您已经拥有不记名令牌,请在javascript中设置Authorization标头。

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();

有关更多信息,请参见Secure a Web API with Individual Accounts and Local Login in ASP.NET Web API 2.2