我使用 token 来保护我的 Web API 网站,并从 AngularJS 客户端应用程序使用此 API。
这样我就可以使用基于 token 的身份验证进行登录。我的问题是我无法在 Web API Controller 中获取 UserId
。
User.Identity.GetUserId()
和 RequestContext.Principal.Identity.GetUserId()
均返回 null
。
如何在ApiController
中获取UserId
?
最佳答案
如果您已有不记名 token ,请在 JavaScript 中设置授权 header 。
var token = sessionStorage.getItem(tokenKey);
var headers = {};
if (token) {
headers.Authorization = 'Bearer ' + token;
}
那么您应该在 ajax 请求中包含 header :
$.ajax({
type: 'GET',
url: 'api/values/1',
headers: headers
}).done(function (data) {
self.result(data);
}).fail(showError);
最后在你的 Controller 中你可以通过以下方式获取用户ID:
var userId = RequestContext.Principal.Identity.GetUserId();
更多信息请参阅Secure a Web API with Individual Accounts and Local Login in ASP.NET Web API 2.2
关于angularjs - User.Identity.GetUserId() 和 RequestContext.Principal.Identity.GetUserId() 在 WEB API Controller 中返回 NULL。使用基于 token 的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38299526/