Role Provider con SQLite

di: Francesco Camarlinghi     23 Gennaio 2008

Role Provider è un servizio di ASP.NET, disponibile dalla versione 2.0 del Framework .Net, che permette la gestione dei ruoli.

I ruoli sono gruppi di utenti che condividono gli stessi privilegi all'interno di un sito internet. Ad esempio, in un blog potrebbero essere definiti i ruoli di amministratore, utente registrato ed utente anonimo per mostrare nelle pagine soltanto le funzioni appropriate al gruppo a cui appartiene il visitatore. L'utente deve quindi essere identificato, compito di cui si occupa un altro servizio di ASP.NET, Membership Provider. Membership e Role Provider sono stati progettati, infatti, per lavorare fianco a fianco.

In questo articolo realizziamo un Role Provider personalizzato basato su database SQLite e come Membership Provider utilizziamo quello presentato nell'articolo Un Membership Provider con SQLite, che è utile consultare per maggiori informazioni. Per un'introduzione a SQLite si veda invece l'articolo ASP.NET & SQLite.

I concetti qui esposti possono comunque essere applicati anche ad altri database, come MySql o Oracle, avendo soltanto cura di modificare in modo appropriato il provider ADO.NET utilizzato.

Il web.config

Prima di passare ad analizzare il codice è necessario modificare il file di configurazione dell'applicazione Web aggiungendo la definizione del roleManager all'interno della sezione <system.web>.

Listato 1. Modifica al web.config

<system.web>
[...]

<roleManager defaultProvider="SQLiteRoleProvider" enabled="true" cacheRolesInCookie="true"
      cookieName=".ASPROLES" cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All">
  
  <providers>
    <clear/>
    <add name="SQLiteRoleProvider" type="Example.SQLiteRoleProvider"
          connectionStringName="SQLiteConnString" applicationName="Example" />
  
  </providers>
</roleManager>

[...]
</system.web>

ASP.NET è ora configurato per ignorare il Role Provider predefinito. Al suo posto verrà caricata la classe Example.SQLiteRoleProvider, di cui ci occuperemo tra poco. Tutte le altre impostazioni sono quelle predefinite del Role Provider. Per maggiori informazioni vi invito a consultare la documentazione ufficiale su MSDN.

A questo punto è necessario configurare la stringa di connessione al database.

Listato 2. Dichiarare la strina di connessione

<connectionStrings>
  <remove name="SQLiteConnString" />
  <add connectionString="Data Source=|DataDirectory|Example.db;"
        name="SQLiteConnString" providerName="System.Data.SQLite"
  />
</connectionStrings>

Ho volontariamente omesso, per chiarezza e perché esula dagli scopi di questo articolo, la configurazione del Membership Provider. Per saperne di più, consiglio di leggere l'articolo Un Membership Provider con SQLite.

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Amministratore di Reti Windows Server 2008

20 Febbraio 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto