MembershipUser.GetPassword Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает пароль для пользователя членства из хранилища данных членства.
Перегрузки
| Имя | Описание |
|---|---|
| GetPassword() |
Возвращает пароль для пользователя членства из хранилища данных членства. |
| GetPassword(String) |
Возвращает пароль для пользователя членства из хранилища данных членства. |
GetPassword()
Возвращает пароль для пользователя членства из хранилища данных членства.
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
Возвращаемое значение
Пароль для пользователя членства.
Исключения
Этот метод недоступен. Это может произойти, если приложение предназначено для профиля клиента .NET Framework 4. Чтобы предотвратить это исключение, переопределите метод или измените приложение на целевую полную версию .NET Framework.
Примеры
В следующем примере кода вызывается GetPassword метод для получения пароля для указанного имени пользователя. Пароль отправляется по адресу электронной почты пользователя. Обратите внимание, что предполагаетсяfalse, что RequiresQuestionAndAnswer это .
Замечание
Возврат пароля в виде чистого текста с помощью электронной почты не рекомендуется для сайтов, требующих высокого уровня безопасности. Для сайтов с высокой безопасностью рекомендуется возвращать пароли с помощью шифрования, например 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>
<%@ 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>
Комментарии
GetPassword MembershipProvider.GetPassword вызывает метод поставщика членства, на который ProviderName ссылается свойство, чтобы получить пароль для членства из хранилища данных членства.
Если EnablePasswordRetrieval это falseтак, поставщик членства вернет исключение. Если поставщик поддерживает пароли с PasswordFormatHashedодним из, вы не сможете получить пароль для пользователя членства и следует рассмотреть возможность использования ResetPassword метода, когда пользователь забыл свой пароль.
Замечание
Создается ConfigurationException исключение, если enablePasswordRetrieval задано true значение и passwordFormat задано Hashed значение в файле Web.config для приложения ASP.NET.
Если RequiresQuestionAndAnswer это trueтак, необходимо использовать GetPassword перегрузку, которая принимает ответ пароля в качестве параметра и предоставить ответ пароля для пользователя членства. Если требуется ответ на пароль и указан неверный ответ на пароль, MembershipPasswordException создается поставщиком членства.
См. также раздел
Применяется к
GetPassword(String)
Возвращает пароль для пользователя членства из хранилища данных членства.
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
Параметры
- 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>
<%@ 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>
Комментарии
GetPassword MembershipProvider.GetPassword вызывает метод поставщика членства, на который ProviderName ссылается свойство, чтобы получить пароль для пользователя членства из хранилища данных членства. Если требуется ответ на пароль и указан неверный ответ на пароль, MembershipPasswordException создается поставщиком членства.
Если EnablePasswordRetrieval это falseтак, поставщик членства вернет исключение. Если поставщик поддерживает пароли с PasswordFormatHashedодним из, вы не сможете получить пароль для пользователя членства и следует рассмотреть возможность использования ResetPassword метода, когда пользователь забыл свой пароль.
Замечание
Создается ConfigurationException исключение, если enablePasswordRetrieval задано true значение и passwordFormat задано Hashed значение в файле Web.config для приложения ASP.NET.
Если RequiresQuestionAndAnswer это falseтак, можно указать null параметр answer или использовать перегрузку GetPassword , которая не принимает никаких параметров.