Role Provider con SQLite

di: Francesco Camarlinghi     23 Gennaio 2008

Il metodo CreateRole() si occupa invece di creare un nuovo ruolo.

Listato 6. CreateRole()

public override void CreateRole(string rolename)
{
  if (rolename.IndexOf(",") > 0)
    throw new ArgumentException("Role names cannot contain commas.");

  if (RoleExists(rolename))
    throw new ProviderException("Role name already exists.");

  SQLiteConnection conn = new SQLiteConnection(connectionString);
  SQLiteCommand cmd = new SQLiteCommand("INSERT INTO " + rolesTable +
        " (Rolename, ApplicationName) " + " Values(?, ?)", conn);

  cmd.Parameters.Add("@Rolename", DbType.String, 255).Value = rolename;
  cmd.Parameters.Add("@ApplicationName", DbType.String, 255).Value = ApplicationName;

  try
  {
    conn.Open();
    cmd.ExecuteNonQuery();
  }
  
  catch (SQLiteException e)  { throw e; }
  
  finally { conn.Close(); }
}

Dopo aver controllato che il nome del nuovo ruolo sia valido (non contiene virgole e non è già presente nel database), vengono creati gli oggetti SQLiteConnection e SQLiteCommand necessari. L'interrogazione viene anche in questo caso gestita all'interno di un blocco try-catch-finally. Questa funzione non restituisce alcun valore. Nel caso che il nome del ruolo non sia valido o si presenti qualche errore durante le operazioni sul database viene restituita un'eccezione.

È bene sottolineare che data la semplice gestione degli errori utilizzata nel codice d'esempio, questa si rende necessaria a livelli di codice più alti. È infatti preferibile non mostrare mai all'utente messaggi di errore interni, soprattutto per quanto riguarda servizi di autenticazione e gestione dei privilegi quali Membership e Role Provider.

Non ho volutamente analizzato la funzione Initialize(), molto importante in quanto si preoccupa di caricare le impostazioni dal file web.config, perché molto simile a quella già trattata per il Membership Provider, da cui differisce soltanto per i dati caricati.

Come ulteriore riferimento per la scrittura di provider personalizzati vi rimando all'ottima sezione di MSDN, Provider Toolkit.

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

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto