我需要从SignalR请求中检索jwt令牌。我不需要此来进行认证(此方法工作正常),但需要令牌上的其他任务。理想情况是,如果可以在集线器级别上检索它。
我的中心班
[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();
}
}
最佳答案
这应该可以工作,您可以使用hub方法:
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。
关于c# - 从SignalR请求检索承载jwt token ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58555215/