C# 默认情况下,信号机核心中所有集线器的授权
我正在使用ASP.Net Core 2.2 Web服务+SignarR Core和JWT身份验证,并希望确保只能使用有效令牌访问我的所有集线器 我可以在所有集线器上设置[Authorize]属性来确保这一点,但在默认情况下是否可能需要授权(否则,将来实现新集线器时可能会忘记授权) 就像我可以为控制器做的那样:C# 默认情况下,信号机核心中所有集线器的授权,c#,asp.net-core,asp.net-core-signalr,C#,Asp.net Core,Asp.net Core Signalr,我正在使用ASP.Net Core 2.2 Web服务+SignarR Core和JWT身份验证,并希望确保只能使用有效令牌访问我的所有集线器 我可以在所有集线器上设置[Authorize]属性来确保这一点,但在默认情况下是否可能需要授权(否则,将来实现新集线器时可能会忘记授权) 就像我可以为控制器做的那样: services.AddMvc(config => { var policy
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
})
要全局检查授权用户,可以尝试 选项1:将中间件配置为在发送信号之前进行授权
app.Use(async (context, next) =>
{
if (context.User.Identity.IsAuthenticated)
{
await next.Invoke();
}
else
{
context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
}
});
app.UseSignalR(routes =>
{
routes.MapHub<ChatHub>("/hubs/chat");
});
[Authorize]
public class AuthorizeHub:Hub
{
}
public class OtherHub: AuthorizeHub
{
}