Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Creare nuovi utenti

Usare CreateUserWizard e form personalizzati
Usare CreateUserWizard e form personalizzati
Link copiato negli appunti

In questo articolo vediamo come permettere la registrazione di un nuovo utente. Vediamo come generare automaticamente la pagina mediante il controllo CreateUserWizard e come crearne a mano una personalizzata aggiungendo qualche riga di codice.

Il CreateUserWizard

Il CreateUserWizard è il controllo di ASP.NET 2.0 che consente di creare un nuovo utente mediante l'immissione di informazioni tramite un form generato automaticamente. Oltre a generare automaticamente il form, il controllo si assume il compiti di verificare la password e l'e-mail inserita ed aggiunge l'utente al Membership Provider specificato con il WAT.

Per comprenderne meglio il funzionamento, realizziamo un esempio e ci basiamo sull'applicazione creata in un articolo precedente che possiamo scaricare da qui e rinominare "CreareNuovoUtente".

Quindi nel progetto "CreareNuovoUtente" aggiungiamo un Web Form di nome NuovoUtente.aspx. Nella modalità visuale di NuovoUtente.aspx trasciniamo un controllo CreateUserWizard prelevandolo dalla sezione Accesso (Login) della casella degli struementi.

Personalizziamo poi a piacere il CreateUserWizard scegliendo lo schema della formattazione automatica che ci piace di più, impostiamo, tramite la finestra delle proprietà, la pagina di destinazione dell'avvenuta registrazione e rendiamo visibile il tasto "Annulla".

ContinueDestinationPageUrl="~/Default.aspx" 
DisplayCancelButton="True"

Poiché il CreateUserWizard si connette automaticamente al Membership Provider dell'applicazione, il nostro lavoro è finito e possiamo fare un test linkando la nuova pagina alla Login.aspx.

Figura 1. Test: inserimento dati
Test: inserimento dati

Clicchiamo quindi su Crea Utente ed otteniamo il messaggio:

Figura 2. Messaggio di utente creato
Messaggio di utente creato

Possiamo verificare che l'utente viene realmente creato mediante il WAT.

Form personalizzato

Realizziamo ora una pagina di creazione nuovo utente personalizzata, senza usufruire del controllo CreateUserWizard.

Chiamiamo la pagina AggiungiUtente.aspx e realizziamola come in figura 3.

Figura 3. AggiungiUtente.aspx
AggiungiUtente.aspx

La pagina è realizzata mediante una tabella 2x7, in cui nella prima colonna sono messe le descrizioni delle caselle di testo presenti nella seconda colonna. C'è poi un'etichetta che serve a visualizzare un messaggio in rosso, un link alla pagina di Login ed un pulsante Aggiungi Utente.

Nella modalità visuale di AggiungiUtente.aspx, clicchiamo due volte sul pulsante per programmare il metodo che gestisce il click nel codice.

Listato 1. Codifica di ButtonAggiungiUtente_Click

protected void ButtonAggiungiUtente_Click(object sender, EventArgs e)
{
 MembershipCreateStatus status;
 try
 {
  if (TextBoxPassword.Text == TextBoxPasswordConf.Text)
  {
   MembershipUser newUser = Membership.CreateUser(TextBoxUserId.Text, TextBoxPassword.Text, TextBoxEmail.Text, TextBoxQuestion.Text, TextBoxAnswer.Text, true, out status);
   
   if (newUser == null)
    Msg.Text = GetErrorMessage(status);
   else
    Msg.Text = "L'utente " + newUser.UserName + " è stato creato. Effettuare il Login.";
  }
  else
   Msg.Text = "Le password inserite non coincidono.";
 }
 catch
 {
  Msg.Text = "Si è verificata un'eccezione.";
 }
}

Innanzitutto definiamo la variabile status di tipo MembershipCreateStatus che ci sarà utile per verificare lo stato di creazione dell'utente.

Verifichiamo poi che il contenuto delle caselle di testo della password e della conferma password coincidano. Se questo non si verifica mandiamo un messaggio ed usciamo dal metodo.

Se le password sono uguali tentiamo di creare l'utente passando i parametri al metodo CreateUser della classe Membership.

Da notare il parametro out status nella riga in rosso: la variabile status non è inizializzata ed il metodo ce la restituisce con l'informazione sullo stato di creazione dell'utente.

Il valore true invece indica che l'utente viene subito autorizzato ad accedere al sistema, cioè può effettuare il login. Mettendo false creeremmo un utente non attivo, da attivare in seguito con il WAT.

Testiamo poi se l'utente non è stato creato per una qualche ragione. In questo caso mandiamo un messaggio decodificando la variabile status per mezzo del metodo GetErrorMessage che dobbiamo implementare.

Se viene lanciata un'eccezione, catturiamola e mandiamo il relativo messaggio.

Implementiamo quindi il metodo GetErrorMessage che serve a restituire le informazioni immagazzinate nella variabile status, che è una enumerazione, durante il processamento del metodo CreateUser.

Listato 2. GetErrorMessage

public string GetErrorMessage(MembershipCreateStatus status)
{
  switch (status)
  {
    case MembershipCreateStatus.DuplicateUserName:
      return "Nome utente già presente. Inserirne uno differente.";
    case MembershipCreateStatus.DuplicateEmail:
      return "Un utente con questa e-mail già esiste. Inserire un altro indirizzo e-mail.";
    case MembershipCreateStatus.InvalidPassword:
      return "Password non valida. Inserirne una valida.";
    case MembershipCreateStatus.InvalidEmail:
      return "Indirizzo e-mail non valido. Inserirne uno valido e riprovare.";
    default: return "Si è verificato un errore sconosciuto. Se il problema persiste contattare l'amministratore.";
  }
}

Non commentiamo il listato che è abbastanza leggibile. È da notare che, per semplicità, il caso default resituisce l'errore generico anche per i casi che non sono stati presi in considerazione.

Verifichiamo ora che la nuova pagina funzioni.

Figura 4. Test di AggiungiUtente.aspx
Test di AggiungiUtente.aspx

Effettuiamo poi il Login per verificare che l'utente appena creato esista veramente e sia attivo, cioè possa accedere al sistema.

L'esempio realizzato in questo articolo, privato del database perché troppo grande, può essere scaricato da qui.

Ti consigliamo anche