Impostare PrincipalPermission da un file XML

di Marco Leoncini, in ASP.NET 2.0, XML,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi