Procedura: utilizzare le funzionalità avanzate del controllo di accesso ASP.NET
Aggiornamento: novembre 2007
Il controllo Login è un controllo composito che fornisce tutti gli elementi dell'interfaccia utente comune di un form di accesso. Il controllo è modulare e ogni parte può essere personalizzata individualmente. Queste parti includono le caselle di testo Username e Password, il pulsante Submit, il pulsante per creare un nuovo utente, la casella di controllo Remember Me e informazioni della Guida per l'utente. È possibile definire un'interfaccia utente personalizzata per il controllo di accesso definendo nuovi elementi e riutilizzando componenti predefiniti. È inoltre possibile personalizzare il testo dell'interfaccia utente e l'aspetto (caratteri e colori) del controllo Login. In alternativa, è possibile modificare l'aspetto complessivo del controllo Login applicando un tema o un'interfaccia ASP.NET.
È inoltre possibile utilizzare funzionalità del controllo Login più avanzate, tra cui la memorizzazione delle informazioni relative all'accesso in un cookie permanente nel browser e la visualizzazione del controllo di accesso in pagine diverse da quella di accesso predefinita dopo che un utente ha effettuato l'accesso. Infine, è possibile convertire il controllo di accesso in un modello per disporre del controllo totale sull'aspetto del controllo.
Per determinare se il controllo di accesso è visibile dopo che un utente ha effettuato l'accesso
Inserire un controllo Login in una pagina.
Nota: Per impostazione predefinita, il controllo è configurato per l'utilizzo con una pagina di accesso denominata Login.aspx. È possibile modificare il nome della pagina di accesso nel file Web.config impostando la proprietà LoginUrl della classe FormsAuthentication.
Per fare in modo che il controllo Login sia visibile solo quando l'utente non è collegato (il controllo verrà sempre visualizzato nella pagina di accesso identificata dalla proprietà LoginUrl), impostare la proprietà VisibleWhenLoggedIn su false.
Per determinare se il token di autenticazione viene memorizzato in un cookie permanente
Se si desidera che il controllo visualizzi una casella di controllo Memorizza dati per la prossima volta, impostare la proprietà DisplayRememberMe su true. Se l'utente seleziona la casella di controllo Memorizza dati per la prossima volta al momento dell'accesso, il token di autenticazione verrà memorizzato in un cookie permanente nel browser.
Se si desidera che la casella di controllo Memorizza dati per la prossima volta venga selezionata per impostazione predefinita, impostare la proprietà RememberMeSet su true.
Per fare in modo che il token di autenticazione venga memorizzato in un cookie permanente senza fornire all'utente la possibilità di deselezionare la casella di controllo Memorizza dati per la prossima volta, impostare la proprietà RememberMeSet su true e la proprietà DisplayRememberMe su false. Questa operazione non è consigliabile per i siti ai quali è possibile accedere da computer pubblici utilizzati da più utenti, poiché un utente indesiderato potrebbe utilizzare il token di autenticazione permanente di un altro utente.
Per aggiungere collegamenti alla Guida al controllo di accesso
Per aggiungere al controllo Login un collegamento a un indirizzo URL dove è possibile creare un nuovo account utente, impostare la proprietà CreateUserText su un testo come Fare clic qui per effettuare la registrazione e la proprietà CreateUserUrl sull'indirizzo URL della pagina della Guida, ad esempio ~/register.aspx.
Nota: Per questo passaggio e quelli seguenti è necessario che gli URL di destinazione si trovino in un percorso che non richiede autenticazione.
Per aggiungere al controllo Login un collegamento a un indirizzo URL che consente di recuperare la password, impostare la proprietà PasswordRecoveryText su un testo come Password dimenticata e la proprietà PasswordRecoveryUrl sull'indirizzoURL della pagina della Guida, ad esempio ~/recoverpassword.aspx.
Per aggiungere al controllo Login un collegamento a un indirizzo URL della Guida, impostare la proprietà HelpPageText su un testo come Guida e la proprietà HelpPageUrl sull'indirizzo URL della pagina della Guida, ad esempio ~/userhelp.aspx.
Per aggiungere immagini al controllo di accesso
Per utilizzare un'immagine anziché un pulsante Accedi, impostare la proprietà LoginButtonImageUrl sull'indirizzo URL del file dell'immagine di accesso, ad esempio ~/images/login.gif.
È inoltre possibile includere immagini con i collegamenti agli indirizzi URL di creazione utente, recupero della password e Guida rispettivamente mediante le proprietà PasswordRecoveryIconUrl, CreateUserIconUrl e HelpPageIconUrl.
Conversione del controllo di accesso in un modello
È possibile convertire il controllo Login in un modello definito nel codice come tabella che contiene controlli ASP.NET, ad esempio Label e TextBox. È quindi possibile utilizzare questi elementi o aggiungere elementi personali per creare un modello personalizzato per il controllo Login. Si noti che per i controlli che costituiscono il modello di accesso vengono utilizzati gli stessi ID del controllo utilizzati nel modello predefinito.
Per utilizzare un modello con il controllo di accesso
Inserire un controllo Login in una pagina in visualizzazione Progettazione.
Fare clic con il pulsante destro del mouse sul controllo e scegliere Converti in modello dal menu di scelta rapida.
Il metodo di conversione del controllo Login dipende dalla dichiarazione DOCTYPE. Se la dichiarazione DOCTYPE è impostata su XHTML 1.0 Transitional (<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">), gli stili vengono applicati alla tabella creata quando il controllo Login viene convertito in un modello. Se la dichiarazione DOCTYPE non è impostata su XHTML 1.0 Transitional o è assente, nessuna informazione relativa viene mantenuta nella tabella esterna generata.
Ad esempio, se si imposta la dimensione relativa del carattere nel controllo Login e quindi si converte il controllo in un modello, la dimensione relativa del carattere non viene mantenuta nella tabella. Nell'esempio seguente viene illustrato un controllo Login con una dimensione del carattere impostata su Grande.
<asp:login id="Login2" font-size="X-Large" BackColor="#F7F6F3" BorderColor="#E6E2D8" BorderPadding="4" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" ForeColor="#333333">
<TitleTextStyle BackColor="#5D7B9D" Font-Bold="True" Font-Size="0.9em" ForeColor="White" />
<InstructionTextStyle Font-Italic="True" ForeColor="Black" />
<TextBoxStyle Font-Size="0.8em" />
<LoginButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px"
Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284775" />
</asp:login>
Quando il controllo Login nel codice riportato sopra viene convertito in un modello, nella tabella creata non è presente nessuno degli stili applicati. L'esempio seguente è un frammento del codice generato dal controllo riportato sopra quando questo viene convertito in un modello.
<asp:login id="Login2" font-size="X-Large" BackColor="#F7F6F3" BorderColor="#E6E2D8" BorderPadding="4" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" ForeColor="#333333">
<TitleTextStyle BackColor="#5D7B9D" Font-Bold="True" Font-Size="0.9em" ForeColor="White" />
<InstructionTextStyle Font-Italic="True" ForeColor="Black" />
<TextBoxStyle Font-Size="0.8em" />
<LoginButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px"
Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284775" />
<LayoutTemplate>
<table border="0" cellpadding="4" cellspacing="0" style="border-collapse: collapse">
...
Se si desidera che gli attributi di stile vengano applicati anche alla tabella creata quando si converte il controllo Login in un modello, assicurarsi che la dichiarazione DOCTYPE per la pagina sia impostata su XHTML 1.0 Transitional prima di scegliere Converti in modello dal menu del controllo in visualizzazione Progettazione.
Vedere anche
Concetti
Personalizzazione dell'aspetto dei controlli di accesso ASP.NET
Cenni preliminari su temi e interfacce ASP.NET