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.

Другие вопросы по тегам