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
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Usare un KeyedService di default in ASP.NET Core 8
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Gestire i dati con Azure Cosmos DB Data Explorer
Proteggere le risorse Azure con private link e private endpoints
.NET Conference Italia 2024
Paginare i risultati con QuickGrid in Blazor
Migrare una service connection a workload identity federation in Azure DevOps
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Cancellare una run di un workflow di GitHub
Effettuare il binding di date in Blazor
Generare velocemente pagine CRUD in Blazor con QuickGrid