我使用令牌来保护我的Web API网站,并从AngularJS客户端应用程序中使用此API。
有了这个,我可以使用基于令牌的身份验证登录。我的问题是我无法在Web API控制器中获得UserId
。
User.Identity.GetUserId()
和RequestContext.Principal.Identity.GetUserId()
都返回null
。
如何在UserId
中获取ApiController
?
答案 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