我有一个授权要求,确保http标头中的访问令牌有效:
class AccessTokenRequirement : AuthorizationHandler<AccessTokenRequirement>, IAuthorizationRequirement
{
protected async override Task HandleRequirementAsync(AuthorizationHandlerContext context, AccessTokenRequirement requirement)
{
//...
}
}
我将此要求添加到startup.cs类中的mvc管道,如下所示:
services.AddAuthorization(options =>
{
options.AddPolicy("AccessToken", policy => policy.Requirements.Add(
services.BuildServiceProvider().GetRequiredService<AccessTokenRequirement>()));
});
然后我在我的信号器集线器上使用这个要求,如下:
[Authorize(Policy = "AccessToken")]
public class MyHub : Hub
在授权要求中,我检查令牌并通过点击数据库来识别用户。我的问题是如何在集线器方法中访问用户详细信息?将信息从授权要求内部传递到集线器方法的优雅方法是什么? 我已经阅读了asp.net中的Identity概念,但发现它很难理解。 提前谢谢。
答案 0 :(得分:2)
您可以通过ClaimsPrincipal
访问集线器内的Context.User
。
这是您想要的信息还是您想要在Hub中访问的其他内容?