Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从信令请求中检索承载jwt令牌_C#_Jwt_Signalr - Fatal编程技术网

C# 从信令请求中检索承载jwt令牌

C# 从信令请求中检索承载jwt令牌,c#,jwt,signalr,C#,Jwt,Signalr,我需要从信号器请求中检索jwt令牌。我需要这个不是为了Authenticate(这很好),而是为了令牌上的进一步任务。理想的情况是,如果我能在集线器级别检索它 我的集线器类 [Authorize(AuthenticationSchemes = "Bearer")] public class MyHub : Hub { private readonly IMyService _myService; public myHub(IMyServi

我需要从信号器请求中检索jwt令牌。我需要这个不是为了Authenticate(这很好),而是为了令牌上的进一步任务。理想的情况是,如果我能在集线器级别检索它

我的集线器类

    [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();
        }
    }

这应该是可行的,您可以通过集线器方法来实现:

    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.signar中的扩展方法GetHttpContext()完成,希望您也能使用Core