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 метод для получения пароля для указанного имени пользователя. Пароль отправляется на адрес электронной почты пользователя. Обратите внимание, что предполагается, что 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>
<%@ 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 для параметра задано значение true
, а passwordFormat
в файле Web.config для приложения ASP.NET возникает Hashed
исключение enablePasswordRetrieval
.
Если 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 для параметра задано значение true
, а passwordFormat
в файле Web.config для приложения ASP.NET возникает Hashed
исключение enablePasswordRetrieval
.
Если RequiresQuestionAndAnswer имеет значение false
, можно указать null
answer
параметр или использовать перегрузку GetPassword , которая не принимает никаких параметров.