Una lacuna del filtro AuthorizeAttribute standard di ASP.NET MVC è che non permette di negare l'autorizzazione a particolari ruoli o utenti. Si tratta di un'esigenza tipicamente più rara del classico "autorizza l'utente X"; alle volte, però, accade che per la particolare natura dell'applicazione e delle caratteristiche del ruolo, è più immediato ragionare nei termini di ciò che l'utente non possa fare.
Per implementare questa funzionalità, è sufficiente realizzare un filtro custom che erediti da AuthorizeAttribute:
public class DenyAttribute : AuthorizeAttribute { protected override bool AuthorizeCore(HttpContextBase httpContext) { if (!httpContext.User.Identity.IsAuthenticated) return false; return !base.AuthorizeCore(httpContext); } }
La classe in alto effettua l'override del metodo AuthorizeCore e nega l'autorizzazione all'utente anonimo restituendo false se l'IIdentity corrente risulta non autenticato. Se questo controllo invece ha successo, viene applicata la logica standard di AuthorizeAttribute, opportunamente negata, con il risultato di vietare l'accesso agli utenti e ai ruoli specificati.
Per utilizzarla è sufficiente decorare le azioni o i controller desiderati:
[Deny(Roles="Users")] public ActionResult MyAction() { .. }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Eseguire una query su SQL Azure tramite un workflow di GitHub
Miglioramenti agli screen reader e al contrasto in Angular
Creazione di componenti personalizzati in React.js con Tailwind CSS
Evitare il flickering dei componenti nel prerender di Blazor 8
Migrare una service connection a workload identity federation in Azure DevOps
Implementare l'infinite scroll con QuickGrid in Blazor Server
Ordine e importanza per @layer in CSS
Utilizzare Azure AI Studio per testare i modelli AI
Utilizzare Copilot con Azure Cosmos DB
Cambiare la chiave di partizionamento di Azure Cosmos DB
Creare un'applicazione React e configurare Tailwind CSS