3

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

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

User.Identity.GetUserId()和都RequestContext.Principal.Identity.GetUserId()回来了null

如何UserId进入ApiController

4

1 回答 1

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

有关详细信息,请参阅在 ASP.NET Web API 2.2 中使用个人帐户和本地登录保护 Web API

于 2019-01-29T05:20:50.643 回答