Получите заявки и подписку в Web Api Controller (.Net Core 2.1) - PullRequest
0 голосов
/ 02 октября 2018

Я использую JWT с .Net Core 2.1 и декоратор

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]

в своем классе контроллеров.В 2.0 казалось, что вам нужно было сделать что-то вроде следующего, но теперь оно помечено как устаревшее:

var authenticateInfo = await HttpContext.Authentication.GetAuthenticateInfoAsync("Bearer");
string accessToken = authenticateInfo.Properties.Items[".Token.access_token"];

Я видел некоторые другие довольно замысловатые методы расширения классов авторизации и тому подобное, которые я предпочел быизбежать.Я просто хочу получить доступ к деталям токена так же, как я их закодировал, например .Sub, и к пользовательским утверждениям, которые я добавил, таким как «Имя» и «Роли».Как это сделать в .Net Core 2.1?

1 Ответ

0 голосов
/ 02 октября 2018

Попробуйте привести HttpContext.User.Identity к ClaimsIdentity.

claimsIdentity = User.Identity as ClaimsIdentity;

// alternatively
// claimsIdentity = HttpContext.User.Identity as ClaimsIdentity;

// get some claim by type
var someClaim = claimsIdentity.FindFirst("some-claim");

// iterate all claims
foreach (var claim in claimsIdentity.Claims)
{
    System.Console.WriteLine(claim.Type + ":" + claim.Value);
}

Вот конкретные документы .NET Core , которые поддерживают свойство HttpContext.User.Identity.

...