SqlMembershipProvider.ResetPassword(String, String) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mereset kata sandi pengguna ke kata sandi baru yang dibuat secara otomatis.
public:
override System::String ^ ResetPassword(System::String ^ username, System::String ^ passwordAnswer);
public override string ResetPassword (string username, string passwordAnswer);
override this.ResetPassword : string * string -> string
Public Overrides Function ResetPassword (username As String, passwordAnswer As String) As String
Parameter
- username
- String
Pengguna untuk mengatur ulang kata sandi.
- passwordAnswer
- String
Jawaban kata sandi untuk pengguna yang ditentukan.
Mengembalikan
Kata sandi baru untuk pengguna yang ditentukan.
Pengecualian
EnablePasswordReset diatur ke false
.
username
tidak ditemukan dalam database keanggotaan.
-atau-
Tindakan ubah kata sandi dibatalkan oleh pelanggan acara ValidatingPassword dan FailureInformation propertinya adalah null
.
-atau-
Terjadi kesalahan saat mengambil kata sandi dari database.
username
adalah string kosong (""), berisi koma, atau lebih panjang dari 256 karakter.
-atau-
passwordAnswer
adalah string kosong, atau lebih panjang dari 128 karakter, dan RequiresQuestionAndAnswer adalah true
.
-atau-
passwordAnswer
lebih panjang dari 128 karakter setelah pengodean.
Terjadi pengecualian yang tidak tertangani.
Contoh
Contoh kode berikut mereset kata sandi pengguna dan mengembalikan kata sandi baru yang dibuat secara otomatis.
Catatan
Contoh ini menggunakan Membership kelas untuk memanggil SqlMembershipProvider yang ditentukan sebagai defaultProvider
dalam file Web.config. Jika Anda perlu mengakses penyedia default sebagai jenis SqlMembershipProvider, Anda dapat melemparkan Provider properti Membership kelas . Untuk mengakses penyedia lain yang dikonfigurasi sebagai jenis penyedia tertentu, Anda dapat mengaksesnya dengan nama yang dikonfigurasi dengan Providers properti Membership kelas dan mentransmisikannya sebagai jenis penyedia tertentu.
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!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.EnablePasswordReset)
{
FormsAuthentication.RedirectToLoginPage();
}
Msg.Text = "";
if (!IsPostBack)
{
Msg.Text = "Please enter a user name.";
}
else
{
VerifyUsername();
}
}
public void VerifyUsername()
{
MembershipUser user = Membership.GetUser(UsernameTextBox.Text, false);
if (user == null)
{
Msg.Text = "The user name " + Server.HtmlEncode(UsernameTextBox.Text) + " was not found. Please check the value and reenter your user name.";
QuestionLabel.Text = "";
QuestionLabel.Enabled = false;
AnswerTextBox.Enabled = false;
ResetPasswordButton.Enabled = false;
}
else
{
QuestionLabel.Text = user.PasswordQuestion;
QuestionLabel.Enabled = true;
AnswerTextBox.Enabled = true;
ResetPasswordButton.Enabled = true;
}
}
public void ResetPassword_OnClick(object sender, EventArgs args)
{
string newPassword = "";
try
{
newPassword = Membership.Provider.ResetPassword(UsernameTextBox.Text, AnswerTextBox.Text);
}
catch (NotSupportedException e)
{
Msg.Text = "An error has occurred resetting your password: " + e.Message + "." +
"Please check your values and try again.";
}
catch (MembershipPasswordException e)
{
Msg.Text = "Invalid password answer. Please reenter the answer and try again.";
return;
}
catch (System.Configuration.Provider.ProviderException e)
{
Msg.Text = "The specified user name does not exist. Please check your value and try again.";
}
if (newPassword != "")
{
Msg.Text = "Password reset. Your new password is: " + Server.HtmlEncode(newPassword);
}
else
{
Msg.Text = "Password reset failed. Please reenter your values and try again.";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Reset Password</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Reset 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="ResetPasswordButton" Text="Reset Password"
OnClick="ResetPassword_OnClick" runat="server" Enabled="false" />
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!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.EnablePasswordReset Then
FormsAuthentication.RedirectToLoginPage()
End If
Msg.Text = ""
If Not IsPostBack Then
Msg.Text = "Please enter a user name."
Else
VerifyUsername()
End If
End Sub
Public Sub VerifyUsername()
Dim user As MembershipUser = Membership.GetUser(UsernameTextBox.Text, False)
If user Is Nothing Then
Msg.Text = "The user name " & Server.HtmlEncode(UsernameTextBox.Text) & " was not found. Please check the value and reenter your user name."
QuestionLabel.Text = ""
QuestionLabel.Enabled = False
AnswerTextBox.Enabled = False
ResetPasswordButton.Enabled = False
Else
QuestionLabel.Text = user.PasswordQuestion
QuestionLabel.Enabled = True
AnswerTextBox.Enabled = True
ResetPasswordButton.Enabled = True
End If
End Sub
Public Sub ResetPassword_OnClick(sender As Object, args As EventArgs)
Dim newPassword As String = ""
Try
newPassword = Membership.Provider.ResetPassword(UsernameTextBox.Text, AnswerTextBox.Text)
Catch e As NotSupportedException
Msg.Text = "An error has occurred resetting your password: " & e.Message & "." & _
"Please check your values and try again."
Catch e As MembershipPasswordException
Msg.Text = "Invalid password answer. Please reenter the answer and try again."
Return
Catch e As System.Configuration.Provider.ProviderException
Msg.Text = "The specified user name does not exist. Please check your value and try again."
End Try
If newPassword <> "" Then
Msg.Text = "Password reset. Your new password is: " & Server.HtmlEncode(newPassword)
Else
Msg.Text = "Password reset failed. Please reenter your values and try again."
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Reset Password</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Reset 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="ResetPasswordButton" Text="Reset Password"
OnClick="ResetPassword_OnClick" runat="server" Enabled="False" />
</form>
</body>
</html>
Keterangan
Metode ini dipanggil oleh Membership kelas untuk mengatur ulang kata sandi untuk pengguna dalam database SQL Server yang ditentukan dalam file konfigurasi aplikasi ASP.NET (Web.config) ke nilai baru yang dihasilkan secara acak. Kata sandi baru dikembalikan.
Catatan
Kata sandi acak yang ResetPassword dibuat oleh metode tidak dijamin untuk meneruskan ekspresi reguler di PasswordStrengthRegularExpression properti . Namun, kata sandi acak akan memenuhi kriteria yang MinRequiredPasswordLength ditetapkan oleh properti dan MinRequiredNonAlphanumericCharacters .
Metode ResetPassword ini paling umum digunakan ketika PasswordFormat properti diatur ke Hashed
. Jika pengguna lupa kata sandi yang di-hash, kata sandi tidak dapat diambil. Namun, penyedia dapat mengatur ulang kata sandi ke kata sandi baru yang dibuat secara otomatis jika pengguna memberikan jawaban kata sandi yang benar.
Jika jawaban kata sandi yang salah diberikan ke ResetPassword metode , penghitung internal yang melacak upaya kata sandi yang tidak valid bertambah satu per satu. Ini dapat mengakibatkan pengguna dikunci dan tidak dapat masuk hingga status kunci dihapus oleh panggilan ke UnlockUser metode . Jika jawaban kata sandi yang benar diberikan dan pengguna saat ini tidak dikunci, maka penghitung internal yang melacak upaya jawaban kata sandi yang tidak valid diatur ulang ke nol. Untuk informasi selengkapnya, lihat properti MaxInvalidPasswordAttempts dan PasswordAttemptWindow.
Anda dapat memanggil metode secara ResetPassword langsung dengan terlebih dahulu mendapatkan referensi ke SqlMembershipProvider instans dari Provider properti Membership kelas . Panjang kata sandi yang dihasilkan setidaknya 14 karakter, atau panjang yang ditentukan dalam MinRequiredPasswordLength properti , dan akan berisi jumlah karakter non-alfanumerik yang ditentukan dalam MinRequiredNonAlphanumericCharacters properti . Kata sandi tidak dijamin untuk meneruskan ekspresi reguler yang terkandung dalam PasswordStrengthRegularExpression properti , jika kata sandi ditentukan.
Spasi di depan dan di belakang dipangkas dari semua nilai parameter.