Ядро C # .NET Лучший способ получить текущий идентификатор пользователя - PullRequest
0 голосов
/ 31 октября 2018

У меня есть много таблиц в моей базе данных, которые используют идентификатор пользователя User.Id в качестве внешнего ключа. Теперь, во многих запросах, которые мне нужны для выполнения приведенных ниже строк, это выглядит так, будто пользователь пуст (даже если я добавлю фильтр [Authorize] в функцию).

var user = await _userManager.GetUserAsync(User);
if (user == null)
{
    ViewBag.ErrorCode = "1201";
    ViewBag.ErrorMsg = "User not found";
    return View("HandledError");
}
var userId = user.Id;

Кто-нибудь знает, как лучше всего получить к нему доступ, не копируя один и тот же код для каждой функции?

Полагаю, у меня могла бы быть функция, которая извлекает Id ... и выдает исключение для Null ... но тогда мне все равно нужно было бы написать это в любом случае при попытке try ....

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

В WebApi 2 вы можете использовать RequestContext.Principal из метода ApiController

string id;
id = User.Identity.GetUserId();
id = RequestContext.Principal.Identity.GetUserId();
0 голосов
/ 31 октября 2018

Идентификатор пользователя является претензией. Вы можете получить его через:

var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

Примечание: вам нужно будет добавить использование для System.Security.Claims.

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