Garantire all'utente l'accesso a particolari pagine o risorse è uno degli aspetti più importanti e delicati di un applicazione web ed ASP.NET 2.0 ha facilitato questo compito con l'introduzione delle Membership e Roles API .
In particolare un HpptModule si preoccupa di impostare il principal i relativi ruoli in base alle credenziali fornite.
La classe RolePrincipal, nel namespace System.Web.Security, implementa l'interfaccia IPrincipal ed è incapsulata nella pagina e facilmente raggiungibile tramite la proprietà User e per verificare se un utente appartenga o meno a un determinato ruolo è possibile utilizzare il metodo IsInRole, esposto dall'interfaccia IPrincipal, o in alternativa il metodo IsUserInRole esposto dalla classe Roles (System.Web.Security).
Un'alternativa più flessibile è ricorrere all'utilizzo della classe PrincipalPermission, come già visto nello script #686:
PrincipalPermission principalPermission = new PrincipalPermission("marco", "admin"); principalPermission.Demand();
Mediante il metodo Demand è possibile determinare a runtime se il Principal corrente soddisfa i requisiti richiesti dall'oggetto PrincipalPermission.
La feature più interessante dell'oggetto PrincipalPermission è la possibilità di "esportare" e "importare" i permessi in formato XML, passando al metodo PrincipalPermission.FromXml un oggetto del tipo SecurityElement, una semplice e leggera rappresentazioni a oggetti del file XML.
Questo rende possibile specificare i ruoli necessari all'accesso a determinate risorse anche a runtime, ad esempio caricandoli da fonti dati esterne, o stabilendoli in maniera programmatica.
Il codice allegato contiene un semplice sito di esempio con 2 pagine accessibili solo a determinati utenti che dispongano di specifici ruoli, con i privilegi ricostruiti tramite due file XML.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.