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