Прочитать на английском

Поделиться через


MembershipUser.GetPassword Метод

Определение

Возвращает пароль для авторизованного пользователя из хранилища данных членства.

Перегрузки

GetPassword()

Возвращает пароль для авторизованного пользователя из хранилища данных членства.

GetPassword(String)

Возвращает пароль для авторизованного пользователя из хранилища данных членства.

GetPassword()

Возвращает пароль для авторизованного пользователя из хранилища данных членства.

public virtual string GetPassword();

Возвращаемое значение

Пароль для авторизованного пользователя.

Исключения

Этот метод недоступен. Это может произойти, если приложение предназначено для клиентского профиля .NET Framework 4. Чтобы предотвратить это исключение, переопределите метод или измените целевую платформу приложения на полную версию платформы .NET Framework.

Примеры

В следующем примере кода вызывается GetPassword метод для получения пароля для указанного имени пользователя. Пароль отправляется на адрес электронной почты пользователя. Обратите внимание, что предполагается, что RequiresQuestionAndAnswer имеет значение false.

Примечание

Возвращать пароль в виде ясного текста с помощью электронной почты не рекомендуется для сайтов, требующих высокого уровня безопасности. Для сайтов с высоким уровнем безопасности рекомендуется возвращать пароли с помощью шифрования, например SSL.

Важно!

В этом примере содержится текстовое поле, которое принимает введенные пользователем данные, что является потенциальной угрозой безопасности. По умолчанию данные, вводимые пользователем на веб-страницах ASP.NET, проверяются на наличие скриптов и HTML-элементов. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.

<%@ 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>

Комментарии

GetPassword MembershipProvider.GetPassword вызывает метод поставщика членства, на который ссылается ProviderName свойство , чтобы получить пароль для членства из хранилища данных членства.

Если EnablePasswordRetrieval имеет значение false, поставщик членства вернет исключение. Если поставщик поддерживает пароли с PasswordFormatHashed, вы не сможете получить пароль для участника, и следует рассмотреть возможность использования ResetPassword метода , когда пользователь забыл свой пароль.

Примечание

Если ConfigurationException для параметра задано значение true , а passwordFormat в файле Web.config для приложения ASP.NET возникает Hashed исключение enablePasswordRetrieval .

Если RequiresQuestionAndAnswer имеет значение true, необходимо использовать перегрузку GetPassword , которая принимает ответ пароля в качестве параметра и предоставляет ответ пароля для пользователя членства. Если требуется ответ пароля и указан неверный MembershipPasswordException ответ пароля, поставщик членства генерирует исключение .

См. также раздел

Применяется к

.NET Framework 4.8.1 и другие версии
Продукт Версии
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

GetPassword(String)

Возвращает пароль для авторизованного пользователя из хранилища данных членства.

public virtual string GetPassword(string passwordAnswer);

Параметры

passwordAnswer
String

Ответ пароля для авторизованного пользователя.

Возвращаемое значение

Пароль для авторизованного пользователя.

Исключения

Этот метод недоступен. Это может произойти, если приложение предназначено для клиентского профиля .NET Framework 4. Чтобы предотвратить это исключение, переопределите метод или измените целевую платформу приложения на полную версию платформы .NET Framework.

Примеры

В следующем примере кода вызывается GetPassword метод для получения пароля для указанного имени пользователя, если указан правильный ответ на пароль. Пароль отправляется на адрес электронной почты пользователя.

Примечание

Возвращать пароль в виде ясного текста с помощью электронной почты не рекомендуется для сайтов, требующих высокого уровня безопасности. Для сайтов с высоким уровнем безопасности рекомендуется возвращать пароли с помощью шифрования, например SSL.

Важно!

В этом примере содержится текстовое поле, которое принимает введенные пользователем данные, что является потенциальной угрозой безопасности. По умолчанию данные, вводимые пользователем на веб-страницах ASP.NET, проверяются на наличие скриптов и HTML-элементов. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.

<%@ 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>

Комментарии

GetPassword MembershipProvider.GetPassword вызывает метод поставщика членства, на который ссылается ProviderName свойство , чтобы получить пароль для пользователя членства из хранилища данных членства. Если требуется ответ пароля и указан неверный MembershipPasswordException ответ пароля, поставщик членства генерирует исключение .

Если EnablePasswordRetrieval имеет значение false, поставщик членства вернет исключение. Если поставщик поддерживает пароли с PasswordFormatHashed, вы не сможете получить пароль для участника, и следует рассмотреть возможность использования ResetPassword метода , когда пользователь забыл свой пароль.

Примечание

Если ConfigurationException для параметра задано значение true , а passwordFormat в файле Web.config для приложения ASP.NET возникает Hashed исключение enablePasswordRetrieval .

Если RequiresQuestionAndAnswer имеет значение false, можно указать nullanswer параметр или использовать перегрузку GetPassword , которая не принимает никаких параметров.

См. также раздел

Применяется к

.NET Framework 4.8.1 и другие версии
Продукт Версии
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1