cfg.Events = new JwtBearerEvents
{
OnMessageReceived = context =>
{
var accessToken = context.Request.Query["access_token"];
// If the request is for our hub...
var path = context.HttpContext.Request.Path;
if (!string.IsNullOrEmpty(accessToken) &&
(path.StartsWithSegments("/sas")))
{
// Read the token out of the query string
context.Token = accessToken;
}
return Task.CompletedTask;
}
};
在我的中心,我试图得到这样的要求
Context.User.Claims
但它们为空
那么有什么选择可以在我的信号中心中获得我的JWT索赔?
答案 0 :(得分:0)
我有一个类似的问题,我已经通过替换它解决了它:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
与此:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
由于某种原因,我不得不明确定义DefaultAuthenticateScheme
。我仍然不知道为什么DefaultAuthenticateScheme
并没有自动退回到DefaultScheme
,根据文档。如果找出原因,我将更新答案。