Come sappiamo, tramite l'attributo Authorize, possiamo attivare la protezione a livello di action o di controller, così che solo chi è autenticato (o è in possesso del ruolo indicato) possa effettivamente utilizzarle. Alle volte, per ragioni di sicurezza o di comodità, può essere necessario applicare la logica opposta, rendendo disponibile l'intero sito agli utenti autenticati, e sbloccando solo alcune determinate operazioni (come la pagina di login o di registrazione) per gli utenti anonimi, secondo una logica di white listing.
Questa funzionalità è stata introdotta in ASP.NET MVC 4 grazie alla classe AllowAnonymousAttribute, che serve a marcare un controller o una action come pubblica:
[AllowAnonymous] public ActionResult SignIn() { // .. altro codice qui .. }
In questo modo, non ci resta che proteggere l'intero controller o addirittura tutto il sito, registrando per esempio il filtro Authorize tra i global filter:
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new GlobalAuthorize()); } }
Come possiamo facilmente immaginare, il vantaggio di questo approccio è sicuramente la comodità, visto che ci consente di scrivere meno codice, ma soprattutto la sicurezza, in quanto non corriamo il rischio di lasciare "sguarnite" alcune sezioni del sito semplicemente per aver dimenticato di marcarle opportunamente.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Proteggere le risorse Azure con private link e private endpoints
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Creare un webhook in Azure DevOps
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Utilizzare QuickGrid di Blazor con Entity Framework
Filtering sulle colonne in una QuickGrid di Blazor
Rendere le variabili read-only in una pipeline di Azure DevOps
Utilizzare gRPC su App Service di Azure
Eseguire query manipolando liste di tipi semplici con Entity Framework Core