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
Path addizionali per gli asset in ASP.NET Core MVC
Filtering sulle colonne in una QuickGrid di Blazor
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Cancellare una run di un workflow di GitHub
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Configurare lo startup di applicazioni server e client con .NET Aspire
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Il nuovo controllo Range di Blazor 9
Migrare una service connection a workload identity federation in Azure DevOps