Авторизация для всех хабов по умолчанию в SignalR Core - PullRequest
1 голос
/ 20 марта 2019

Я работаю над веб-службой ASP.Net Core 2.2 + SignarR Core с аутентификацией JWT и хочу, чтобы все мои хабы могли быть доступны только с действительным токеном.

Я могу установить атрибут [Authorize] навсе концентраторы, чтобы гарантировать это, но возможно ли требовать авторизацию по умолчанию (иначе это можно забыть при реализации нового концентратора в будущем).

Точно так же, как я могу сделать это для контроллеров:

services.AddMvc(config =>
                        {
                            var policy = new AuthorizationPolicyBuilder()
                                         .RequireAuthenticatedUser()
                                         .Build();
                            config.Filters.Add(new AuthorizeFilter(policy));
                        })

1 Ответ

1 голос
/ 21 марта 2019

Для глобальной проверки Авторизованного пользователя, вы можете попробовать

Опции1: настроить промежуточное ПО для авторизации перед сигналом R

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");
});  

Опции2: Реализация базового концентратора и других концентраторов, унаследованных от этого базового концентратора

[Authorize]
public class AuthorizeHub:Hub
{

}
public class OtherHub: AuthorizeHub
{

} 
...