User.Identity.GetUserId() и RequestContext.Principal.Identity.GetUserId() возвращает значение NULL в контроллере WEB API. Используемая токен-аутентификация
Я использовал токены для защиты своего веб-сайта API-интерфейса и использовал этот API-интерфейс из клиентского приложения AngularJS.
Благодаря этому я могу войти с помощью аутентификации на основе токена. Моя проблема в том, что я не могу получить UserId
в контроллере веб API.
И то и другое User.Identity.GetUserId()
а также RequestContext.Principal.Identity.GetUserId()
возвращаются null
,
Как получить UserId
в ApiController
?
0 ответов
Если у вас уже есть токен на предъявителя, установите заголовок авторизации в 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);
Наконец, в вашем контроллере вы можете получить идентификатор пользователя:
var userId = RequestContext.Principal.Identity.GetUserId();
Для получения дополнительной информации см. Защита веб-API с помощью индивидуальных учетных записей и локального входа в ASP.NET Web API 2.2.