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