Сигнализатор ASP.NET Core 2.0 передает данные из требования авторизации в концентратор

У меня есть требование авторизации, которое гарантирует, что токен доступа в заголовке 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, но мне было трудно ее понять. Заранее спасибо.


person fischja    schedule 12.01.2018    source источник


Ответы (1)


У вас есть доступ к ClaimsPrincipal внутри вашего хаба через Context.User.

Это та информация, которую вы хотите, или есть что-то еще, к чему вы хотите получить доступ в своем хабе?

person Brennan    schedule 12.01.2018
comment
Я не понимал, что могу получить к нему доступ из моего хаба, большое спасибо! - person fischja; 17.01.2018