MembershipUser.GetPassword Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Üyelik veri deposundan üyelik kullanıcısının parolasını alır.
Aşırı Yüklemeler
GetPassword() |
Üyelik veri deposundan üyelik kullanıcısının parolasını alır. |
GetPassword(String) |
Üyelik veri deposundan üyelik kullanıcısının parolasını alır. |
GetPassword()
Üyelik veri deposundan üyelik kullanıcısının parolasını alır.
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
Döndürülenler
Üyelik kullanıcısının parolası.
Özel durumlar
Bu yöntem kullanılamıyor. Uygulama .NET Framework 4 İstemci Profili'ni hedefliyorsa bu durum oluşabilir. Bu özel durumu önlemek için yöntemini geçersiz kılın veya uygulamayı .NET Framework'ün tam sürümünü hedefleyecek şekilde değiştirin.
Örnekler
Aşağıdaki kod örneği, belirtilen kullanıcı adının parolasını almak için yöntemini çağırır GetPassword . Parola kullanıcının e-posta adresine gönderilir. değerinin RequiresQuestionAndAnswer olduğu varsayılır false
.
Not
Yüksek düzeyde güvenlik gerektiren siteler için e-posta kullanarak parolayı düz metin olarak döndürmek önerilmez. Yüksek güvenlikli siteler için SSL gibi şifreleme kullanarak parolalar döndürmeniz önerilir.
Önemli
Bu örnek, olası bir güvenlik tehdidi olan kullanıcı girişini kabul eden bir metin kutusu içerir. Varsayılan olarak, ASP.NET Web sayfaları kullanıcı girişinin betik veya HTML öğeleri içermediğini doğrular. Daha fazla bilgi için bkz . Betik Açıklarına Genel Bakış.
<%@ 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>
Açıklamalar
GetPassword MembershipProvider.GetPassword üyelik veri deposundan üyeliğin parolasını almak için özelliği tarafından ProviderName başvuruda bulunan üyelik sağlayıcısının yöntemini çağırır.
ise EnablePasswordRetrievalfalse
, üyelik sağlayıcısı bir özel durum döndürür. Sağlayıcı bir PasswordFormatHashedile parolaları destekliyorsa, üyelik kullanıcısının parolasını alamazsınız ve kullanıcı parolasını unuttuğunda yöntemini kullanmayı ResetPassword düşünmelisiniz.
Not
ConfigurationException ASP.NET uygulamasının true
Web.config dosyasında olarak ve passwordFormat
olarak ayarlanırsa enablePasswordRetrieval
Hashed
bir oluşturulur.
ise RequiresQuestionAndAnswertrue
, parola yanıtını GetPassword parametre olarak alan ve üyelik kullanıcısı için parola yanıtını sağlayan aşırı yüklemeyi kullanmanız gerekir. Parola yanıtı gerekiyorsa ve yanlış bir parola yanıtı verilirse, üyelik sağlayıcısı tarafından bir MembershipPasswordException oluşturulur.
Ayrıca bkz.
Şunlara uygulanır
GetPassword(String)
Üyelik veri deposundan üyelik kullanıcısının parolasını alır.
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
Parametreler
- passwordAnswer
- String
Üyelik kullanıcısının parola yanıtı.
Döndürülenler
Üyelik kullanıcısının parolası.
Özel durumlar
Bu yöntem kullanılamıyor. Uygulama .NET Framework 4 İstemci Profili'ni hedefliyorsa bu durum oluşabilir. Bu özel durumu önlemek için yöntemini geçersiz kılın veya uygulamayı .NET Framework'ün tam sürümünü hedefleyecek şekilde değiştirin.
Örnekler
Aşağıdaki kod örneği, doğru parola yanıtı sağlanırsa belirtilen kullanıcı adının parolasını almak için yöntemini çağırır GetPassword . Parola kullanıcının e-posta adresine gönderilir.
Not
Yüksek düzeyde güvenlik gerektiren siteler için e-posta kullanarak parolayı düz metin olarak döndürmek önerilmez. Yüksek güvenlikli siteler için SSL gibi şifreleme kullanarak parolalar döndürmeniz önerilir.
Önemli
Bu örnek, olası bir güvenlik tehdidi olan kullanıcı girişini kabul eden bir metin kutusu içerir. Varsayılan olarak, ASP.NET Web sayfaları kullanıcı girişinin betik veya HTML öğeleri içermediğini doğrular. Daha fazla bilgi için bkz . Betik Açıklarına Genel Bakış.
<%@ 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>
Açıklamalar
GetPassword MembershipProvider.GetPassword üyelik veri deposundan üyelik kullanıcısının parolasını almak için özelliği tarafından ProviderName başvuruda bulunan üyelik sağlayıcısının yöntemini çağırır. Parola yanıtı gerekiyorsa ve yanlış bir parola yanıtı verilirse, üyelik sağlayıcısı tarafından bir MembershipPasswordException oluşturulur.
ise EnablePasswordRetrievalfalse
, üyelik sağlayıcısı bir özel durum döndürür. Sağlayıcı bir PasswordFormatHashedile parolaları destekliyorsa, üyelik kullanıcısının parolasını alamazsınız ve kullanıcı parolasını unuttuğunda yöntemini kullanmayı ResetPassword düşünmelisiniz.
Not
ConfigurationException ASP.NET uygulamasının true
Web.config dosyasında olarak ve passwordFormat
olarak ayarlanırsa enablePasswordRetrieval
Hashed
bir oluşturulur.
ise RequiresQuestionAndAnswerfalse
parametresini answer
sağlayabilir null
veya herhangi bir parametre almayan GetPassword aşırı yüklemeyi kullanabilirsiniz.