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
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Ordinare randomicamente una lista in C#
Proteggere le risorse Azure con private link e private endpoints
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Testare l'invio dei messaggi con Event Hubs Data Explorer
Configurare lo startup di applicazioni server e client con .NET Aspire
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Aggiungere interattività lato server in Blazor 8
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Hosting di componenti WebAssembly in un'applicazione Blazor static
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Effettuare il refresh dei dati di una QuickGrid di Blazor