SignalR предоставляет атрибут Authorize, чтобы указать, какие пользователи или роли имеют доступ к хабу или методу. Этот атрибут находится в пространстве имен Microsoft.AspNet.SignalR. Вы применяете атрибут Authorize для хаба или конкретных методов в концентраторе. Когда вы применяете атрибут Authorize к классу хаба, указанное требование авторизации применяется ко всем методам в концентраторе. Без атрибута Authorize подключенный клиент может получить доступ к любому общедоступному методу на концентраторе.
Если в вашем веб-приложении определена роль «Admin», вы можете указать, что только пользователи в этой роли могут получить доступ к концентратору со следующим кодом.
[Authorize(Roles = "Admin")]
public class AdminAuthHub : Hub
{
}
Или, вы можете указать, что концентратор содержит один метод, который доступен для всех пользователей, и второй способ, который доступен только для авторизованных пользователей, как показано ниже.
public class SampleHub : Hub
{
public void UnrestrictedSend(string message){ . . . }
[Authorize]
public void AuthenticatedSend(string message){ . . . }
}
Следующих примеры решение различных сценариев авторизации:
[Authorize] – only authenticated users
[Authorize(Roles = "Admin,Manager")] – only authenticated users in the specified roles
[Authorize(Users = "user1,user2")] – only authenticated users with the specified user names
[Authorize(RequireOutgoing=false)] – only authenticated users can invoke the hub,
but calls from the server back to clients are not limited by authorization, such as, when only
certain users can send a message but all others can receive the message.
The RequireOutgoing property can only be applied to the entire hub, not on individuals methods within the hub. When RequireOutgoing is not set to false, only users that meet the authorization requirement are called from the server.
Вы можете получить более подробную информацию в этом article
Надеется, что это помогает.
Спасибо за ваш ответ, однако с атрибутом 'Microsoft.AspNet.SignalR' [Authorize] метод OnConnected() по-прежнему вызван для неавторизованных пользователей. Спасибо – Luke