Как я могу найти текущий идентификатор пользователя, вошедшего в систему. Net Core - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь войти в систему с текущим идентификатором пользователя, чтобы я мог вывести подробности об этом пользователе, а также назначить детали для пользователя, например, события бронирования, просмотр событий, которые он забронировал, и т. Д. c.

Я пытался сделать так

var USERID = User.Claims.FirstOrDefault(c => c.Type == "Id")

, но я получаю ошибку при попытке присвоить int.

У меня есть метод обслуживания в моем проекте данных, подключающемся к БД Я передаю эти методы из службы в контроллер, если это вообще помогает.

Любая помощь будет великолепной.

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Вы можете использовать IHttpContextAccessor, чтобы получить доступ к HttpContext и получить Текущий UserId вот так

public int GetCurrentUserId()
{
    var claimsIdentity = _contextAccessor.HttpContext.User.Identity as ClaimsIdentity;
    var userDataClaim = claimsIdentity?.FindFirst("Id");//or claimsIdentity?.FindFirst(ClaimTypes.NameIdentifier);
    var userId = userDataClaim?.Value;
    return string.IsNullOrWhiteSpace(userId) ? 0 : int.Parse(userId);
}

Или

int userId = Convert.ToInt32((User.Identity as ClaimsIdentity).FindFirst(ClaimTypes.Name).Value);
0 голосов
/ 13 апреля 2020

Правильный способ сделать это через User.FindFirstValue(ClaimTypes.NameIdentifier).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...