Я пытаюсь получить доступ к токену в классе SignalRHub через строку запроса.Вот код клиента:
const connection = new signalR.HubConnectionBuilder()
.withUrl($("#url").val(), {
skipNegotiation: true,
transport: signalR.HttpTransportType.WebSockets,
accessTokenFactory: () => {
token
}
})
.configureLogging(signalR.LogLevel.Trace)
.build();
Конфигурация Jwt:
OnMessageReceived = context =>
{
var accessToken = context.Request.Query["access_token"];
var path = context.HttpContext.Request.Path.Value;
if (!string.IsNullOrEmpty(accessToken) && (path.Equals("/websocket"))
{
context.Token = accessToken;
}
return Task.CompletedTask;
}
Проблема в том, что когда я делаю запрос к своему хабу, accessToken имеет значение null, даже если я передаю его черезaccessTokenFactory.Нет параметра строки запроса "access_token".Код был составлен по руководству по документам .Я уже пытался изменить свой вызов промежуточного программного обеспечения при запуске и не разрешил.
Файл запуска:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
.AddSessionStateTempDataProvider();
/*aditional configurations*/
services.AddSignalR();
/*more aditional configurations*/
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors(options =>
{
options.WithExposedHeaders("Location");
options.AllowAnyOrigin();
options.AllowAnyHeader();
options.AllowAnyMethod();
options.AllowCredentials();
});
app.UseSignalR(routes =>
{
routes.MapHub<SignalRHub>("/websocket");
});
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute("api", "{controller}/{action}/{id}");
});
/*aditional middlewares*/
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor |
ForwardedHeaders.XForwardedProto
});
}
Любая помощь будет оценена