У меня есть приложение .NET Core 2.1, в котором у меня есть обработчик аутентификации, который я использую для извлечения значения заголовка.
Как мне добавить это значение в свой ClaimsIdentity и как я могу затем получить доступэто из моего контроллера?
У меня есть следующий код, который работает со всеми действиями моего контроллера:
public class CustomAuthHandler : AuthenticationHandler<CustomAuthOptions>
{
public CustomAuthHandler(IOptionsMonitor<CustomAuthOptions> options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock)
: base(options, logger, encoder, clock)
{
}
protected override Task<AuthenticateResult> HandleAuthenticateAsync()
{
// Get Authorization header value
if (!Request.Headers.TryGetValue(HeaderNames.Authorization, out var authorization))
{
return Task.FromResult(AuthenticateResult.Fail("Cannot read authorization header."));
}
var key = authorization.FirstOrDefault() ?? "";
var token = JsonConvert.DeserializeObject<Token>(authorization);
var identities = new List<ClaimsIdentity> { new ClaimsIdentity("custom auth type") };
var ticket = new AuthenticationTicket(new ClaimsPrincipal(identities), Options.Scheme);
return Task.FromResult(AuthenticateResult.Success(ticket));
}
}
Я думаю, что мне нужно сделать, это передать мою переменную токена в мой ClaimsIdentity?Если да, то как мне это сделать, и как мне получить доступ к своим утверждениям с моего контроллера API?