【问题标题】:Retrieve bearer jwt token from SignalR request从 SignalR 请求中检索不记名 jwt 令牌
【发布时间】:2020-02-21 14:40:04
【问题描述】:

我需要从 SignalR 请求中检索 jwt 令牌。我需要这个不是为了认证(这很好用),而是为了进一步的令牌任务。理想情况下,如果我可以在 Hub 级别检索它。

我的 Hub 课程

    [Authorize(AuthenticationSchemes = "Bearer")]
    public class MyHub : Hub
    {
        private readonly IMyService _myService;

        public myHub(IMyService myService)
        {
            _myService = myService;
        }

        public async Task GetSomething()
        {
            await Clients.Caller.SendAsync("GetSomething", await _myService.GetSome();
        }
    }

【问题讨论】:

    标签: c# jwt signalr


    【解决方案1】:

    这应该可以,你可以在中心方法中做到这一点:

        var httpContext = Context.GetHttpContext();
        if (httpContext.Request.Headers.TryGetValue("Authorization", out var authorizationValues))
            {
                var tokenWithBearer = authorizationValues.FirstOrDefault(s => s.Contains("Bearer", StringComparison.InvariantCultureIgnoreCase));
                if (tokenWithBearer != null)
                {
                    // now trunc it at left to remove "Bearer " and get your token
                }
            }
    

    在 Microsoft.AspNetCore.SignalR 中使用扩展方法 GetHttpContext() 完成,希望您也将在 Core 中。

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 2019-11-21
      • 2023-03-16
      • 2015-08-13
      • 2020-10-26
      • 1970-01-01
      • 2021-07-12
      • 2019-05-23
      • 2017-04-17
      相关资源
      最近更新 更多