【问题标题】:ASP.NET Core 2.0 Signalr pass data from authorization requirement to hubASP.NET Core 2.0 Signalr 将数据从授权要求传递到集线器
【发布时间】:2018-06-21 16:27:09
【问题描述】:

我有一个授权要求,确保 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 概念,但发现它很难理解。 提前致谢。

【问题讨论】:

    标签: asp.net-core-2.0 asp.net-core-signalr


    【解决方案1】:

    您可以通过Context.User 访问集线器内的ClaimsPrincipal

    这是您想要的信息,还是您希望在 Hub 中访问其他内容?

    【讨论】:

    • 我没有意识到我可以从我的中心访问它,非常感谢!
    猜你喜欢
    • 2019-08-10
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多