Uwierzytelnianie i autoryzacja połączeń trwałych usługi SignalR
Autor: Patrick Fletcher, Tom FitzMacken
Ostrzeżenie
Ta dokumentacja nie jest przeznaczona dla najnowszej wersji usługi SignalR. Przyjrzyj się ASP.NET Core SignalR.
W tym temacie opisano sposób wymuszania autoryzacji na trwałym połączeniu. Aby uzyskać ogólne informacje na temat integrowania zabezpieczeń z aplikacją SignalR, zobacz Wprowadzenie do zabezpieczeń.
Wersje oprogramowania używane w tym temacie
- Visual Studio 2013
- .NET 4.5
- SignalR w wersji 2
Poprzednie wersje tego tematu
Aby uzyskać informacje o wcześniejszych wersjach usługi SignalR, zobacz SignalR Older Versions (Starsze wersje usługi SignalR).
Pytania i komentarze
Prześlij opinię na temat tego, jak podoba ci się ten samouczek i co możemy poprawić w komentarzach w dolnej części strony. Jeśli masz pytania, które nie są bezpośrednio związane z samouczkiem, możesz opublikować je na forum ASP.NET SignalR lub StackOverflow.com.
Wymuszanie autoryzacji
Aby wymusić reguły autoryzacji podczas korzystania z elementu PersistentConnection , należy zastąpić metodę AuthorizeRequest
. Nie można użyć atrybutu Authorize
z połączeniami trwałymi. Metoda jest wywoływana AuthorizeRequest
przez platformę SignalR Framework przed każdym żądaniem w celu sprawdzenia, czy użytkownik ma autoryzację do wykonania żądanej akcji. Metoda AuthorizeRequest
nie jest wywoływana z klienta. Zamiast tego uwierzytelniasz użytkownika za pośrednictwem standardowego mechanizmu uwierzytelniania aplikacji.
W poniższym przykładzie pokazano, jak ograniczyć żądania do uwierzytelnionych użytkowników.
public class AuthenticatedConnection : PersistentConnection
{
protected override bool AuthorizeRequest(IRequest request)
{
return request.User.Identity.IsAuthenticated;
}
}
W metodzie AuthorizeRequest można dodać dowolną niestandardową logikę autoryzacji; na przykład sprawdzenie, czy użytkownik należy do określonej roli.