Esporta (0) Stampa
Espandi tutto

Classe ChangePassword

Fornisce un'interfaccia utente che consente agli utenti di cambiare la password del sito Web.

Spazio dei nomi: System.Web.UI.WebControls
Assembly: System.Web (in system.web.dll)

[BindableAttribute(false)] 
public class ChangePassword : CompositeControl, INamingContainer
/** @attribute BindableAttribute(false) */ 
public class ChangePassword extends CompositeControl implements INamingContainer
BindableAttribute(false) 
public class ChangePassword extends CompositeControl implements INamingContainer
Non applicabile.

Utilizzare il controllo ChangePassword in una pagina per consentire agli utenti del sito Web di cambiare le password che utilizzano per eseguire l'accesso.

NotaNota:

Se non si ha dimestichezza con l'insieme dei controlli di accesso disponibili in ASP.NET, leggere Cenni preliminari sui controlli di accesso di ASP.NET prima di continuare. Per un elenco di altri argomenti correlati ai controlli di accesso e all'appartenenza, vedere Gestione di utenti tramite l'appartenenza.

Nota sulla sicurezzaNota: sulla protezione

La trasmissione di password tramite HTTP rappresenta un potenziale rischio per la sicurezza. Le trasmissioni tramite HTTP possono infatti essere viste o compromesse da utenti malintenzionati. Per garantire un grado di sicurezza maggiore quando si utilizzano controlli di accesso, è consigliabile utilizzare il protocollo HTTPS con la crittografia SSL (Secure Sockets Layer) in modo da rendere impossibile la lettura della password dell'utente durante il postback. Per ulteriori informazioni, vedere Protezione dei controlli di accesso.

Il controllo ChangePassword utilizza il provider di appartenenze definito nella proprietà MembershipProvider per cambiare la password archiviata nell'archivio dati del provider di appartenenze per il sito Web. Se non si assegna un provider di appartenenze specifico, il controllo ChangePassword utilizzerà quello predefinito indicato nella sezione membership del file Web.config. Il controllo ChangePassword consente agli utenti di effettuare le seguenti operazioni:

  • Cambiare la propria password dopo aver eseguito l'accesso.

  • Cambiare la propria password quando non sono connessi, purché la pagina contenente il controllo ChangePassword consenta l'accesso anonimo e la proprietà DisplayUserName sia impostata su true.

  • Cambiare la password per un account utente, anche se hanno eseguito l'accesso con un account diverso. A tale scopo, è necessario che la proprietà DisplayUserName sia impostata su true.

Se la proprietà DisplayUserName è impostata su true, viene visualizzata la casella di testo Nome utente, in cui l'utente può digitare un nome utente. Se l'utente ha eseguito l'accesso, nel controllo UserName viene inserito il nome dell'utente connesso. Dopo il cambiamento della password per un determinato nome utente, l'accesso viene eseguito automaticamente all'account associato alla password cambiata, anche se prima l'utente non era connesso a tale account.

Nota sulla sicurezzaNota: sulla protezione

L'accettazione dell'input dell'utente rappresenta un potenziale rischio per la sicurezza. Può accadere infatti che utenti malintenzionati inviino dati allo scopo di individuare eventuali vulnerabilità del sistema o eseguano programmi che provano password generate automaticamente. Per garantire un grado di sicurezza maggiore quando si gestisce l'input dell'utente, è consigliabile utilizzare le funzionalità di convalida del controllo e proteggere gli eventuali provider di dati configurati per il controllo. Per ulteriori informazioni, vedere Protezione dei controlli di accesso, Suggerimenti di base sulla protezione delle applicazioni Web e Protezione dell'appartenenza.

Invio di messaggi di posta elettronica

Il controllo ChangePassword può essere configurato in modo da utilizzare servizi di posta elettronica per inviare la nuova password all'utente. Per inviare messaggi di posta elettronica agli utenti da un controllo server Web di ASP.NET, è necessario configurare un server di posta elettronica nel file Web.config dell'applicazione. Per ulteriori informazioni, vedere Procedura: installare e configurare server virtuali SMTP in IIS.

I messaggi di posta elettronica vengono configurati utilizzando la classe MailDefinition. È necessario impostare la proprietà BodyFileName per indicare a ASP.NET di inviare la posta elettronica.

Nota sulla sicurezzaNota: sulla protezione

L'invio di nomi o password di account utente tramite posta elettronica rappresenta un potenziale rischio per la sicurezza. I messaggi di posta elettronica infatti vengono in genere inviati come testo normale che può essere letto da speciali applicazioni di "sniffing" della rete. Per garantire una maggiore sicurezza, attenersi a quanto illustrato in Protezione dei controlli di accesso.

NotaNota:

Non è possibile garantire che un utente riceva o visualizzi un messaggio di posta elettronica. Per verificare che un utente abbia ricevuto una notifica per posta elettronica, fornire un collegamento di conferma nel messaggio di posta elettronica per consentire all'utente di confermare la ricezione della notifica.

Visualizzazioni

Il controllo ChangePassword può avere due stati o visualizzazioni:

  • Visualizzazione Cambia password   Richiede all'utente di specificare la password corrente e di digitare due volte la nuova password per conferma. Se si consente di cambiare le proprie password agli utenti che non hanno eseguito l'accesso, impostare la proprietà DisplayUserName su true per visualizzare il controllo UserName nella visualizzazione Cambia password. Il controllo UserName consente all'utente di fornire il proprio nome utente registrato. In caso di errore durante il cambiamento della password, nella visualizzazione Cambia password viene visualizzato un messaggio di errore e l'utente può ritentare.

  • Visualizzazione Operazione riuscita   Conferma che la password è stata cambiata.

NotaImportante:

Le funzionalità Cambia password, Continua e Annulla verranno associate a qualsiasi pulsante con il nome di comando corretto, indipendentemente dalla visualizzazione in cui il pulsante è collocato. Ad esempio, un pulsante con il nome del comando uguale a Cambia password nella visualizzazione del messaggio di operazione riuscita tenterà di modificare la password e genererà un'eccezione.

Stili e modelli

Per personalizzare l'aspetto del controllo ChangePassword, è possibile utilizzare una vasta gamma di proprietà di stile. In alternativa, qualora si desideri definire in modo ancora più specifico l'aspetto del controllo ChangePassword, è possibile applicare modelli personalizzati alle due visualizzazioni a esso associate. Se si definisce un modello per una visualizzazione, vengono applicate le proprietà ControlStyle. Per un elenco dei controlli da impostare nei modelli delle visualizzazioni, vedere le proprietà ChangePasswordTemplate e SuccessTemplate. Il controllo ChangePassword esamina il contenuto del modello e genera un'eccezione se rileva che un controllo obbligatorio non è presente, è denominato in modo non corretto o è del tipo errato. Se ad esempio si utilizza il contenuto del modello e si imposta la proprietà DisplayUserName su true, ChangePassword genererà un'eccezione se per il nome utente non viene trovato un controllo TextBox o un altro controllo IEditableTextControl.

Nella tabella riportata di seguito sono elencate le proprietà di stile del controllo ChangePassword e viene illustrato l'elemento dell'interfaccia utente su cui hanno effetto. Per un elenco delle proprietà a cui viene applicato ciascuno stile, vedere la singola proprietà di stile.

Proprietà di stile ChangePassword

Elemento dell'interfaccia utente

CancelButtonStyle

Pulsante Annulla nella visualizzazione Cambia password.

ChangePasswordButtonStyle

Pulsante Cambia password nella visualizzazione Cambia password.

ContinueButtonStyle

Pulsante Continua nella visualizzazione Operazione riuscita.

FailureTextStyle

Testo di errore visualizzato all'utente.

HyperLinkStyle

Collegamenti ipertestuali ad altre pagine.

InstructionTextStyle

Testo esplicativo sulla pagina che descrive come utilizzare il controllo ChangePassword.

LabelStyle

Etichette di tutti i campi di input, ad esempio le caselle di testo.

PasswordHintStyle

Suggerimenti per l'impostazione di una password accettabile per il sito Web.

SuccessTextStyle

Testo visualizzato all'utente quando l'operazione di cambiamento della password ha esito positivo.

TextBoxStyle

Campi di immissione di testo.

TitleTextStyle

Titoli delle visualizzazioni Cambia password e Operazione riuscita.

Raggruppamenti per la convalida

Il controllo ChangePassword utilizza un gruppo di convalida in modo che gli altri campi presenti nella stessa pagina del controllo ChangePassword possano essere convalidati separatamente. Per impostazione predefinita, la proprietà ID del controllo ChangePassword viene utilizzata come nome del gruppo di convalida. Ad esempio, nel caso di un controllo ChangePassword con ID "ChangePassword1", anche il nome del gruppo di convalida utilizzato sarà ChangePassword1. Per impostare il gruppo di convalida di cui fa parte il controllo ChangePassword, è necessario creare un modello con il controllo e quindi cambiare il nome del gruppo di convalida.

Per visualizzare messaggi di errore se un utente lascia vuoto un controllo TextBox, aggiungere un controllo ValidationSummary alla pagina. Impostare la proprietà ValidationGroup del controllo ValidationSummary sulla proprietà ID del controllo ChangePassword.

Accesso facilitato

Se il controllo ChangePassword non viene personalizzato mediante l'utilizzo di modelli, la proprietà AccessKey del controllo ChangePassword verrà applicata alla prima casella di testo del controllo. Se invece il controllo ChangePassword viene personalizzato mediante l'utilizzo di modelli, la proprietà AccessKey verrà ignorata. In questo caso, impostare direttamente la proprietà AccessKey di ciascun controllo figlio del modello. La proprietà TabIndex viene visualizzata in tutti i controlli TextBox nel controllo ChangePassword. Se invece il controllo ChangePassword viene personalizzato mediante l'utilizzo di modelli, la proprietà TabIndex verrà ignorata.

Il codice sottoposto a rendering per impostazione predefinita per questo controllo potrebbe non essere conforme agli standard di accesso facilitato, come le linee guida WCAG (Web Content Accessibility Guidelines) 1.0 livello 1. Ad esempio, l'utilizzo della proprietà CancelDestinationPageUrl o della proprietà SuccessPageUrl determina un aggiornamento della pagina non conforme al requisito di accesso facilitato che indica di non aggiornare una pagina quando ne viene selezionato un pulsante o un collegamento. Per informazioni dettagliate sul supporto dell'accesso facilitato per questo controllo, vedere Controlli ASP.NET e accesso facilitato.

Accesso ai controlli durante le fasi Page_Load e Page_Init

Le proprietà del controllo ChangePassword rappresentate da caselle di testo, come ad esempio UserName e CurrentPassword, sono accessibili durante tutte le fasi del ciclo di vita della pagina. In particolare, durante le fasi Page_Init e Page_Load, queste proprietà hanno lo stesso valore che avevano al momento del rendering del controllo ChangePassword. Se l'utente cambia il valore della proprietà UserName modificando la casella di testo UserName, il nuovo valore diventerà disponibile quando verrà generato l'evento modificato, ovvero dopo la fase Page_Load. Se pertanto si imposta il valore della proprietà UserName nella fase Page_Init o Page_Load e si fornisce un gestore personalizzato per un evento ChangePassword, qualsiasi modifica apportata dall'utente nella casella di testo UserName eseguirà l'override del valore impostato nella fase Page_Init o Page_Load.

Nell'esempio di codice riportato di seguito viene illustrato come impostare la proprietà NewPasswordRegularExpression per definire un'espressione regolare in grado di controllare che le password soddisfino i seguenti criteri:

  • Sono superiori a sei caratteri.

  • Contengono almeno una cifra.

  • Contengono almeno un carattere speciale (non alfanumerico).

All'utente vengono visualizzati i requisiti per le password contenuti nella proprietà PasswordHintText.

Se la password immessa dall'utente non soddisfa i requisiti della proprietà NewPasswordRegularExpression, all'utente verrà visualizzato il testo contenuto nella proprietà NewPasswordRegularExpressionErrorMessage. Se non viene immessa una nuova password, all'utente verrà visualizzato il testo contenuto nella proprietà NewPasswordRequiredErrorMessage.

NotaNota:

La nuova password deve soddisfare i requisiti minimi impostati dal provider di appartenenze nelle proprietà MinRequiredPasswordLength, MinRequiredNonAlphanumericCharacters e PasswordStrengthRegularExpression. Se la password non soddisfa questi requisiti, verrà generato l'evento ChangePasswordError.

<%@ page language="C#"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>Change Password with Validation</title>
</head>
<body>
  <form id="form1" runat="server">
  <div>
  <asp:changepassword id="ChangePassword1" runat="server"
  PasswordHintText = 
    "Please enter a password at least 7 characters long, 
    containing a number and one special character."
  NewPasswordRegularExpression =
    '@\"(?=.{7,})(?=(.*\d){1,})(?=(.*\W){1,})' 
  NewPasswordRegularExpressionErrorMessage =
    "Error: Your password must be at least 7 characters long, 
    and contain at least one number and one special character." >
  </asp:changepassword>
  </div>
  </form>
</body>
</html>

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 è supportato in Windows Vista, Microsoft Windows XP SP2 e Windows Server 2003 SP1.

.NET Framework

Supportato in:

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft