Как я могу получить доступ к токену JWT и декодировать его, чтобы получить пользовательский идентификатор?
Я не понимаю, зачем вам нужен токен JWT, чтобы получитьидентификатор пользователя, потому что объект HttpContext
уже выставляет текущий principal
для запроса как свойство User
. Ядро ASP.NET также не отправляет токен JWT при каждом запросе. Он отправляет зашифрованный куки-файл аутентификации, который был создан при входе пользователя, и просто содержит утверждения из этого токена JWT.
principal
- текущий пользователь, реализованный как ClaimsPrincipal. Он содержит коллекцию утверждений, описывающих указанного пользователя, и содержит идентификатор пользователя, а также другие утверждения, полученные от поставщика удостоверений.
Если мы находимся в контроллере, который наследуется от базовых классов Controller и ControllerBaseтогда мы можем получить доступ к принципалу пользователя следующим образом:
[HttpPost]
[Authorize(Policy = Policies.Admin)]
public async Task<IActionResult> CreateVehicle([FromBody]SaveVehicleResource vehicleResource)
{
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
}