У меня есть требование авторизации, которое гарантирует, что токен доступа в заголовке http действителен:
class AccessTokenRequirement : AuthorizationHandler<AccessTokenRequirement>, IAuthorizationRequirement
{
protected async override Task HandleRequirementAsync(AuthorizationHandlerContext context, AccessTokenRequirement requirement)
{
//...
}
}
Я добавляю это требование к конвейеру mvc в классе startup.cs следующим образом:
services.AddAuthorization(options =>
{
options.AddPolicy("AccessToken", policy => policy.Requirements.Add(
services.BuildServiceProvider().GetRequiredService<AccessTokenRequirement>()));
});
Затем я использую это требование на своих концентраторах сигналов следующим образом:
[Authorize(Policy = "AccessToken")]
public class MyHub : Hub
Внутри требования авторизации я проверяю токен и идентифицирую пользователя, обращаясь к базе данных. У меня вопрос: как мне получить доступ к информации о пользователе ВНУТРИ методов концентратора? Каким элегантным способом передать информацию из требований авторизации моим методам концентратора? Я прочитал концепцию Identity в asp.net, но мне было трудно ее понять. Заранее спасибо.