MembershipUser.GetPassword Metoda

Definice

Získá heslo pro uživatele členství z úložiště dat členství.

Přetížení

GetPassword()

Získá heslo pro uživatele členství z úložiště dat členství.

GetPassword(String)

Získá heslo pro uživatele členství z úložiště dat členství.

GetPassword()

Získá heslo pro uživatele členství z úložiště dat členství.

public:
 virtual System::String ^ GetPassword();
public virtual string GetPassword ();
abstract member GetPassword : unit -> string
override this.GetPassword : unit -> string
Public Overridable Function GetPassword () As String

Návraty

Heslo pro uživatele členství.

Výjimky

Tato metoda není k dispozici. K tomu může dojít, pokud aplikace cílí na profil klienta rozhraní .NET Framework 4. Chcete-li zabránit této výjimce, přepište metodu nebo změňte aplikaci tak, aby cílila na plnou verzi rozhraní .NET Framework.

Příklady

Následující příklad kódu volá metodu GetPassword pro načtení hesla pro zadané uživatelské jméno. Heslo se odešle na e-mailovou adresu uživatele. Všimněte si, že se předpokládá, že RequiresQuestionAndAnswer je false.

Poznámka

Pro weby, které vyžadují vysokou úroveň zabezpečení, se nedoporučuje vracet heslo jako prostý text e-mailem. U webů s vysokou úrovní zabezpečení se doporučuje vracet hesla pomocí šifrování, jako je ssl.

Důležité

Tento příklad obsahuje textové pole, které přijímá vstup uživatele, což je potenciální bezpečnostní hrozba. Ve výchozím nastavení ASP.NET webové stránky ověřte, že uživatelský vstup neobsahuje skript nebo elementy HTML. Další informace najdete v tématu Přehled zneužití skriptů.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.Mail" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

public void Page_Load(object sender, EventArgs args)
{
  if (!Membership.EnablePasswordRetrieval)
  {
    FormsAuthentication.RedirectToLoginPage();
  }

  Msg.Text = "";

  if (!IsPostBack)
  {
    Msg.Text = "Please supply a username.";
  }
  else
  {
    VerifyUsername();
  }
}


public void VerifyUsername()
{
    MembershipUser u = Membership.GetUser(UsernameTextBox.Text, false);

    if (u == null)
    {
      Msg.Text = "Username " + Server.HtmlEncode(UsernameTextBox.Text) + " not found. Please check the value and re-enter.";

      EmailPasswordButton.Enabled = false;
    }
    else
    {
      EmailPasswordButton.Enabled = true;
    }
}


public void EmailPassword_OnClick(object sender, EventArgs args)
{
  MembershipUser u = Membership.GetUser(UsernameTextBox.Text, false);
  string password;

  if (u != null)
  {
    try
    {
      password = u.GetPassword();
    }
    catch (Exception e)
    {
      Msg.Text = "An exception occurred retrieving your password: " + Server.HtmlEncode(e.Message);
      return;
    }

    EmailPassword(u.Email, password);
    Msg.Text = "Password sent via email.";
  }
  else
  {
    Msg.Text = "User name is not valid. Please check the value and try again.";
  }
}


private void EmailPassword(string email, string password)
{
  try
  {
    MailMessage Message = new MailMessage();
    Message.To = email;
    Message.From = "administrator";
    Message.Subject = "Your Password";
    Message.Body = "Your password is: " + Server.HtmlEncode(password);

    SmtpMail.SmtpServer = "smarthost";
    SmtpMail.Send(Message);
  }
  catch 
  {
    Msg.Text = "An exception occurred sending your password. Please try again.";
  }
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Retrieve Password</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Retrieve Password</h3>

  <asp:Label id="Msg" runat="server" ForeColor="maroon" /><br />

  Username: <asp:Textbox id="UsernameTextBox" Columns="30" runat="server" AutoPostBack="true" />
            <asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server"
                                        ControlToValidate="UsernameTextBox" ForeColor="red"
                                        Display="Static" ErrorMessage="Required" /><br />

  <asp:Button id="EmailPasswordButton" Text="Email My Password" 
              OnClick="EmailPassword_OnClick" runat="server" Enabled="false" />

</form>

</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.Mail" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

Public Sub Page_Load(sender As Object, args As EventArgs)
  If Not Membership.EnablePasswordRetrieval Then
    FormsAuthentication.RedirectToLoginPage()
  End If

  Msg.Text = ""

  If Not IsPostBack Then
    Msg.Text = "Please supply a username."
  Else
    VerifyUsername()
  End If
End Sub


Public Sub VerifyUsername()
    Dim u As MembershipUser = Membership.GetUser(UsernameTextBox.Text, False)

    If u Is Nothing Then
      Msg.Text = "Username " & Server.HtmlEncode(UsernameTextBox.Text) & " not found. Please check the value and re-enter."

      EmailPasswordButton.Enabled = False
    Else
      EmailPasswordButton.Enabled = True
    End If
End Sub


Public Sub EmailPassword_OnClick(sender As Object, args As EventArgs)
  Dim u As MembershipUser = Membership.GetUser(UsernameTextBox.Text, False)
  Dim password As String

  If Not u Is Nothing Then
    Try
      password = u.GetPassword()
      Catch e As Exception
        Msg.Text = "An exception occurred retrieving your password: " & Server.HtmlEncode(e.Message)
        Return
    End Try

    EmailPassword(u.Email, password)
    Msg.Text = "Password sent via email."
  Else
    Msg.Text = "Password Answer is not valid. Please check the value and try again."
  End If
End Sub


Private Sub EmailPassword(email As String, password As String)
  Try
    Dim Message As MailMessage = New MailMessage()
    Message.To = email
    Message.From = "administrator"
    Message.Subject = "Your Password"
    Message.Body = "Your password is: " & Server.HtmlEncode(password)

    SmtpMail.SmtpServer = "smarthost"
    SmtpMail.Send(Message)
  Catch 
    Msg.Text = "An exception occurred sending your password. Please try again."
  End Try
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Retrieve Password</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Retrieve Password</h3>

  <asp:Label id="Msg" runat="server" ForeColor="maroon" /><br />

  Username: <asp:Textbox id="UsernameTextBox" Columns="30" runat="server" AutoPostBack="true" />
            <asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server"
                                        ControlToValidate="UsernameTextBox" ForeColor="red"
                                        Display="Static" ErrorMessage="Required" /><br />

  <asp:Button id="EmailPasswordButton" Text="Email My Password" 
              OnClick="EmailPassword_OnClick" runat="server" Enabled="false" />

</form>

</body>
</html>

Poznámky

GetPassword volá metodu MembershipProvider.GetPassword zprostředkovatele členství odkazovaného ProviderName vlastností k načtení hesla pro členství z úložiště dat členství.

Pokud EnablePasswordRetrieval je false, zprostředkovatel členství vrátí výjimku. Pokud poskytovatel podporuje hesla s PasswordFormatHashedhodnotou , nebudete moct načíst heslo pro uživatele členství a měli byste zvážit použití ResetPassword metody , pokud uživatel zapomene své heslo.

Poznámka

Pokud ConfigurationException je v souboru Web.config pro aplikaci ASP.NET nastavená hodnota true a passwordFormat naHashed, vyvolá enablePasswordRetrieval se hodnota .

Pokud RequiresQuestionAndAnswer je true, musíte jako parametr použít GetPassword přetížení, které přebírá odpověď na heslo a zadat odpověď na heslo pro uživatele členství. Pokud je vyžadována odpověď na heslo a je zadána nesprávná odpověď na heslo, MembershipPasswordException je vyvolán poskytovatelem členství.

Viz také

Platí pro

GetPassword(String)

Získá heslo pro uživatele členství z úložiště dat členství.

public:
 virtual System::String ^ GetPassword(System::String ^ passwordAnswer);
public virtual string GetPassword (string passwordAnswer);
abstract member GetPassword : string -> string
override this.GetPassword : string -> string
Public Overridable Function GetPassword (passwordAnswer As String) As String

Parametry

passwordAnswer
String

Odpověď hesla pro uživatele členství.

Návraty

Heslo pro uživatele členství.

Výjimky

Tato metoda není k dispozici. K tomu může dojít, pokud aplikace cílí na profil klienta rozhraní .NET Framework 4. Chcete-li zabránit této výjimce, přepište metodu nebo změňte aplikaci tak, aby cílila na plnou verzi rozhraní .NET Framework.

Příklady

Následující příklad kódu volá metodu GetPassword pro načtení hesla pro zadané uživatelské jméno, pokud je zadána správná odpověď na heslo. Heslo se odešle na e-mailovou adresu uživatele.

Poznámka

Pro weby, které vyžadují vysokou úroveň zabezpečení, se nedoporučuje vracet heslo jako prostý text e-mailem. U webů s vysokou úrovní zabezpečení se doporučuje vracet hesla pomocí šifrování, jako je ssl.

Důležité

Tento příklad obsahuje textové pole, které přijímá vstup uživatele, což je potenciální bezpečnostní hrozba. Ve výchozím nastavení ASP.NET webové stránky ověřte, že uživatelský vstup neobsahuje skript nebo elementy HTML. Další informace najdete v tématu Přehled zneužití skriptů.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.Mail" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

public void Page_Load(object sender, EventArgs args)
{
  if (!Membership.EnablePasswordRetrieval)
  {
    FormsAuthentication.RedirectToLoginPage();
  }

  Msg.Text = "";

  if (!IsPostBack)
  {
    Msg.Text = "Please supply a username.";
  }
  else
  {
    VerifyUsername();
  }
}


public void VerifyUsername()
{
    MembershipUser u = Membership.GetUser(UsernameTextBox.Text, false);

    if (u == null)
    {
      Msg.Text = "Username " + Server.HtmlEncode(UsernameTextBox.Text) + " not found. Please check the value and re-enter.";

      QuestionLabel.Text = "";
      QuestionLabel.Enabled = false;
      AnswerTextBox.Enabled = false;
      EmailPasswordButton.Enabled = false;
    }
    else
    {
      QuestionLabel.Text = u.PasswordQuestion;
      QuestionLabel.Enabled = true;
      AnswerTextBox.Enabled = true;
      EmailPasswordButton.Enabled = true;
    }
}


public void EmailPassword_OnClick(object sender, EventArgs args)
{
  MembershipUser u = Membership.GetUser(UsernameTextBox.Text, false);
  string password;

  if (u != null)
  {
    try
    {
      password = u.GetPassword(AnswerTextBox.Text);
    }
    catch (Exception e)
    {
      Msg.Text = "An exception occurred retrieving your password: " + Server.HtmlEncode(e.Message);
      return;
    }

    EmailPassword(u.Email, password);
    Msg.Text = "Password sent via email.";
  }
  else
  {
    Msg.Text = "Password Answer is not valid. Please check the value and try again.";
  }
}


private void EmailPassword(string email, string password)
{
  try
  {
    MailMessage Message = new MailMessage();
    Message.To = email;
    Message.From = "administrator";
    Message.Subject = "Your Password";
    Message.Body = "Your password is: " + Server.HtmlEncode(password);

    SmtpMail.SmtpServer = "smarthost";
    SmtpMail.Send(Message);
  }
  catch 
  {
    Msg.Text = "An exception occurred sending your password. Please try again.";
  }
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Retrieve Password</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Retrieve Password</h3>

  <asp:Label id="Msg" runat="server" ForeColor="maroon" /><br />

  Username: <asp:Textbox id="UsernameTextBox" Columns="30" runat="server" AutoPostBack="true" />
            <asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server"
                                        ControlToValidate="UsernameTextBox" ForeColor="red"
                                        Display="Static" ErrorMessage="Required" /><br />

  Password Question: <b><asp:Label id="QuestionLabel" runat="server" /></b><br />

  Answer: <asp:TextBox id="AnswerTextBox" Columns="60" runat="server" Enabled="false" />
          <asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
                                      ControlToValidate="AnswerTextBox" ForeColor="red"
                                      Display="Static" ErrorMessage="Required" Enabled="false" /><br />

  <asp:Button id="EmailPasswordButton" Text="Email My Password" 
              OnClick="EmailPassword_OnClick" runat="server" Enabled="false" />

</form>

</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.Mail" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

Public Sub Page_Load(sender As Object, args As EventArgs)
  If Not Membership.EnablePasswordRetrieval Then
    FormsAuthentication.RedirectToLoginPage()
  End If

  Msg.Text = ""

  If Not IsPostBack Then
    Msg.Text = "Please supply a username."
  Else
    VerifyUsername()
  End If
End Sub


Public Sub VerifyUsername()
    Dim u As MembershipUser = Membership.GetUser(UsernameTextBox.Text, False)

    If u Is Nothing Then
      Msg.Text = "Username " & Server.HtmlEncode(UsernameTextBox.Text) & " not found. Please check the value and re-enter."

      QuestionLabel.Text = ""
      QuestionLabel.Enabled = False
      AnswerTextBox.Enabled = False
      EmailPasswordButton.Enabled = False
    Else
      QuestionLabel.Text = u.PasswordQuestion
      QuestionLabel.Enabled = True
      AnswerTextBox.Enabled = True
      EmailPasswordButton.Enabled = True
    End If
End Sub


Public Sub EmailPassword_OnClick(sender As Object, args As EventArgs)
  Dim u As MembershipUser = Membership.GetUser(UsernameTextBox.Text, False)
  Dim password As String

  If Not u Is Nothing Then
    Try
        password = u.GetPassword(AnswerTextBox.Text)
      Catch e As Exception
        Msg.Text = "An exception occurred retrieving your password: " & Server.HtmlEncode(e.Message)
        Return
    End Try

    EmailPassword(u.Email, password)
    Msg.Text = "Password sent via email."
  Else
    Msg.Text = "Password Answer is not valid. Please check the value and try again."
  End If
End Sub


Private Sub EmailPassword(email As String, password As String)
  Try
    Dim Message As MailMessage = New MailMessage()
    Message.To = email
    Message.From = "administrator"
    Message.Subject = "Your Password"
    Message.Body = "Your password is: " & Server.HtmlEncode(password)

    SmtpMail.SmtpServer = "smarthost"
    SmtpMail.Send(Message)
  Catch 
    Msg.Text = "An exception occurred sending your password. Please try again."
  End Try
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Retrieve Password</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Retrieve Password</h3>

  <asp:Label id="Msg" runat="server" ForeColor="maroon" /><br />

  Username: <asp:Textbox id="UsernameTextBox" Columns="30" runat="server" AutoPostBack="true" />
            <asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server"
                                        ControlToValidate="UsernameTextBox" ForeColor="red"
                                        Display="Static" ErrorMessage="Required" /><br />

  Password Question: <b><asp:Label id="QuestionLabel" runat="server" /></b><br />

  Answer: <asp:TextBox id="AnswerTextBox" Columns="60" runat="server" Enabled="false" />
          <asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
                                      ControlToValidate="AnswerTextBox" ForeColor="red"
                                      Display="Static" ErrorMessage="Required" Enabled="false" /><br />

  <asp:Button id="EmailPasswordButton" Text="Email My Password" 
              OnClick="EmailPassword_OnClick" runat="server" Enabled="false" />

</form>

</body>
</html>

Poznámky

GetPassword volá metodu MembershipProvider.GetPassword zprostředkovatele členství odkazovaného ProviderName vlastností k načtení hesla pro uživatele členství z úložiště dat členství. Pokud je vyžadována odpověď na heslo a je zadána nesprávná odpověď na heslo, MembershipPasswordException je vyvolán poskytovatelem členství.

Pokud EnablePasswordRetrieval je false, zprostředkovatel členství vrátí výjimku. Pokud poskytovatel podporuje hesla s PasswordFormatHashedhodnotou , nebudete moct načíst heslo pro uživatele členství a měli byste zvážit použití ResetPassword metody , pokud uživatel zapomene své heslo.

Poznámka

Pokud ConfigurationException je v souboru Web.config pro aplikaci ASP.NET nastavená hodnota true a passwordFormat naHashed, vyvolá enablePasswordRetrieval se hodnota .

Pokud RequiresQuestionAndAnswer je false, můžete zadat null parametr answer nebo použít GetPassword přetížení, které nepřebírají žádné parametry.

Viz také

Platí pro