Negli esempi che abbiamo visto fino a oggi su ASP.NET SignalR, abbiamo sempre utilizzato hub che erano invocabili anche da un utente anonimo. In realtà, questo framework è in grado di gestire anche scenari in cui sia richiesta l'autenticazione dell'utente stesso. Per rendere sicuro un hub, infatti, non dobbiamo far altro che utilizzare l'attributo Authorize:
[Authorize] public class PingBackHub : Hub { public void SendMessage(string message) { this.Clients.All.pingBack( string.Format("Client {0} says: {1}", this.Context.User.Identity.Name, message)); } }
Questo attributo funziona in maniera analoga a quello di ASP.NET MVC: se utilizzato senza parametri, richiede una semplice autenticazione, ma eventualmente permette anche di specificare ruoli o nomi degli utenti abilitati. Esso può essere applicato a un singolo metodo o, come nel nostro esempio, all'intero hub. In quest'ultimo caso, un client non autenticato non riuscirà a effettuare la connessione.
Se vogliamo consentire comunque la connessione, possiamo impostare la proprietà RequireOutgoing a false:
[Authorize(RequireOutgoing = false)] public class PingBackHub : Hub { // ... }
In questo caso, i client anonimi saranno abilitati solo a ricevere i messaggi inviati dal server, ma non saranno in grado di invocarne i metodi esposti.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Mostrare una preview durante l'upload di un'immagine in Blazor
Collegare servizi a Azure Container App con i service connector
Utilizzare il tag HTML template
Fare automaticamente il merge di una pull request con un workflow di GitHub
Definire la durata dell'output cache in ASP.NET Core 7
Le novità di .NET 7 e C# 11
Chiamare un endpoint ASP.NET Core protetto da Certificate Authentication
GitHub <3 .NET
Gestire i file esterni in una PWA
Utilizzare le Promise in Javascript - seconda parte
Introduzione alla security con GitHub
Creare un job summary in una GitHub Action
I più letti di oggi
- Linting di un Dockerfile con un workflow di GitHub
- Sfruttare la local cache del browser tramite gli ETag in #aspnetcore https://aspit.co/cfc di @crad77 #webapi #aspnetmvc #blazor #cache
- 3 metodi JavaScript che ogni applicazione web dovrebbe contenere - Parte 2
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!