L'architettura dei provider di ASP.NET 2.0

5 pagine in totale: <<Indietro 1 2 3 [4] 5 Avanti >>

System.Web.Security.RoleProvider

In ASP.NET 2.0, come nelle versioni precedenti, a ciascun utente possono essere associati i ruoli, ovvero attributi logici rappresentati da semplici stringhe che permettono una classificazione degli utenti nell'ambito del contesto applicativo. Ogni utente può avere uno o più ruoli. Come detto, un ruolo ha semplicemente una valenza di classificazione, non introduce restrizioni particolari, ma assegna all'utente un'etichetta che può essere utilizzata nell'ambito dell'applicazione per limitare il campo d'azione dell'utente stesso.

Come nel caso dell'API Membership, anche l'API per la gestione dei ruoli basa il suo funzionamento sui Provider. L'API permette di definire nuovi ruoli e di gestire in modo dinamico l'associazione tra ruoli e utenti. L'implementazione, equivalente in tutto e per tutto a quella vista per l'API Membership, segue il modello esposto nell'articolo sul Provider Model. La classe che funge da Manager si chiama Roles, è statica e rimappa i metodi della classe astratta RoleProvider che funge da contratto per le classi concrete che da essa derivano. I Provider concreti presenti nel .NET Framework sono tre. AuthorizationStoreRoleProvider permette di recuperare e salvare le informazioni relative ai ruoli nell'ambito di un data storage quale un file XML locale piuttosto che l'Active Directory o un server ADAM. SqlRoleProvider consente di gestire i dati nell'ambito di un database SQL Server, mentre WindowsTokenRoleProvider recupera le informazioni dai gruppi degli utenti di Windows.

RoleProvider - Diagramma delle classi

La sezione di configurazione relativa all'API per la gestione dei ruoli è rappresentata dal nodo <roleManager />.

<roleManager defaultProvider="WindowsProvider" enabled="true" cacheRolesInCookie="false">
    <providers>
        <add name="WindowsProvider"
            type="System.Web.Security.WindowsTokenRoleProvider,
            System.Web, Version=2.0.0.0, Culture=neutral,
            PublicKeyToken=b03f5f7f11d50a3a" />
    </providers>
</roleManager>

System.Web.SessionState.SessionStateStoreProviderBase

Accanto alle modalità di memorizzazione già note, ovvero in-process, out-of-process (state server) e database, in ASP.NET 2.0 è possibile gestire in modo personalizzato la persistenza dei dati della sessione utente tramite la creazione di Provider custom per l'accesso allo store di memorizzazione. Per esempio, per qualche motivo potrebbe essere necessario salvare i dati della sessione in un database diverso da SQL Server, piuttosto che nell'ambito del filesystem o altrove. In tali casi, derivando semplicemente dalla classe astratta SessionStateStoreProviderBase contenuta nel namespace System.Web.SessionState, è possibile definire un Provider personalizzato che possa essere caricato a runtime e utilizzato dal modulo HTTP SessionStateModule nel modo appropriato.

La classe SessionStateStoreProviderBase deriva direttamente da ProviderBase e funge a sua volta da classe base per tutte le implementazioni concrete relative alla persistenza delle informazioni della sessione. In particolare la classe definisce l'interfaccia che include i metodi per il recupero dei dati dallo store in cui sono contenuti (che può essere un processo, un database, un file, ecc.) e il loro trattamento. Dato che in un contesto multithread è possibile che vi possano essere richieste concorrenti ad una stessa informazione contenuta in sessione, la classe espone anche una serie di metodi per l'accesso esclusivo ai singoli item.

I Provider inclusi nel .NET Framework si riferiscono alle tre modalità di memorizzazione elencate in precedenza. La classe InProcSessionStateStore si riferisce alla modalità predefinita, ovvero la memorizzazione dei dati di sessione nell'ambito del processo stesso. La classe OutOfProcSessionStateStore riguarda la modalità out-of-process basata su state server, mentre SqlSessionStateStore si riferisce al caso in cui la sessione venga persistita su un database SQL Server.

La classe che funge da Manager è il modulo HTTP di gestione della sessione. Durante l'inizializzazione del modulo viene richiamato il metodo privato InitModuleFromConfig(HttpApplication, SessionStateSection) che crea l'istanza del Provider relativo allo store. Il comportamento del metodo varia a seconda delle diverse casistiche. Per i tre Provider sopra citati viene direttamente creata una istanza tramite la chiamata al costruttore nell'ambito del metodo stesso. Nel caso di una implementazione custom viene invece richiamato il metodo privato InitCustomStore(SessionStateSection) che provvede ad attivare l'istanza del Provider custom specificato nell'ambito del file di configurazione.

SessionStateStoreProviderBase - Diagramma delle classi

La sezione di configurazione relativa alla sessione è rappresentata dal nodo <sessionState />. La sottosezione <providers /> viene utilizzata solamente per specificare i Provider custom. Negli altri casi è sufficiente specificare la modalità di memorizzazione e i vari parametri tramite gli attributi del tag <sessionState />.

<sessionState mode="Custom" customProvider="OdbcSessionProvider">
    <providers>
        <add name="OdbcSessionProvider"
            type="Samples.AspNet.Session.OdbcSessionStateStore"
            connectionStringName="OdbcSessionServices" />
    </providers>
</sessionState>

5 pagine in totale: <<Indietro 1 2 3 [4] 5 Avanti >>

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC