Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 默认情况下,信号机核心中所有集线器的授权_C#_Asp.net Core_Asp.net Core Signalr - Fatal编程技术网

C# 默认情况下,信号机核心中所有集线器的授权

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

我正在使用ASP.Net Core 2.2 Web服务+SignarR Core和JWT身份验证,并希望确保只能使用有效令牌访问我的所有集线器

我可以在所有集线器上设置[Authorize]属性来确保这一点,但在默认情况下是否可能需要授权(否则,将来实现新集线器时可能会忘记授权)

就像我可以为控制器做的那样:

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
{

}