Aracılığıyla paylaş


SqlMembershipProvider.ResetPassword(String, String) Yöntem

Tanım

Kullanıcının parolasını otomatik olarak oluşturulan yeni bir parolaya sıfırlar.

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

Parametreler

username
String

Parolasını sıfırlanması gereken kullanıcı.

passwordAnswer
String

Belirtilen kullanıcı için parola yanıtı.

Döndürülenler

Belirtilen kullanıcının yeni parolası.

Özel durumlar

passwordAnswer geçersizdir.

-veya-

Kullanıcı hesabı şu anda kilitli.

EnablePasswordReset olarak ayarlanır false.

username üyelik veritabanında bulunamadı.

-veya-

Parola değiştirme eylemi, olayın abonesi ValidatingPassword tarafından iptal edildi ve FailureInformation özelliği oldu null.

-veya-

Veritabanından parola alınırken bir hata oluştu.

username boş bir dizedir (""), virgül içerir veya 256 karakterden uzundur.

-veya-

passwordAnswer boş bir dizedir veya 128 karakterden uzundur ve RequiresQuestionAndAnswer olur true.

-veya-

passwordAnswer kodlamadan sonra 128 karakterden uzundur.

username, null değeridir.

-veya-

passwordAnswerve şeklindedir nulltrue.RequiresQuestionAndAnswer

İşlenmeyen bir özel durum oluştu.

Örnekler

Aşağıdaki kod örneği bir kullanıcının parolasını sıfırlar ve otomatik olarak oluşturulan yeni parolayı döndürür.

Not

Bu örnek, Membership Web.config dosyasında belirtilen öğesini defaultProvider çağırmak SqlMembershipProvider için sınıfını kullanır. türü SqlMembershipProviderolarak varsayılan sağlayıcıya erişmeniz gerekiyorsa sınıfının özelliğini Membership yayınlayabilirsinizProvider. Belirli bir sağlayıcı türü olarak yapılandırılan diğer sağlayıcılara erişmek için, bu sağlayıcılara sınıfının özelliğiyle ProvidersMembership yapılandırılmış adlarıyla erişebilir ve bunları belirli bir sağlayıcı türü olarak yayınlayabilirsiniz.

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

Açıklamalar

Bu yöntem, ASP.NET uygulamasının Membership yapılandırma dosyasında (Web.config) belirtilen SQL Server veritabanındaki bir kullanıcının parolasını rastgele oluşturulan yeni bir değere sıfırlamak için sınıfı tarafından çağrılır. Yeni parola döndürülür.

Not

yöntemi tarafından oluşturulan rastgele parolanın ResetPassword özelliğinde normal ifadeyi geçirmesi PasswordStrengthRegularExpression garanti değildir. Ancak, rastgele parola ve MinRequiredNonAlphanumericCharacters özellikleri tarafından MinRequiredPasswordLength oluşturulan ölçütleri karşılar.

ResetPassword yöntemi en yaygın olarak özelliği olarak ayarlandığında HashedkullanılırPasswordFormat. Kullanıcı karma bir parolayı unutursa, parola alınamaz. Ancak, kullanıcı doğru parola yanıtını verirse sağlayıcı parolayı yeni, otomatik olarak oluşturulan bir parolaya sıfırlayabilir.

yöntemine ResetPassword yanlış parola yanıtı verilirse, geçersiz parola girişimlerini izleyen iç sayaç bir artırılır. Bu, kullanıcının kilitlenmesine ve yöntemine yapılan bir çağrı tarafından kilit durumu temizleninceye kadar oturum açamamasına UnlockUser neden olabilir. Doğru parola yanıtı sağlandıysa ve kullanıcı şu anda kilitli değilse, geçersiz parola yanıtı girişimlerini izleyen iç sayaç sıfırlanır. Daha fazla bilgi için MaxInvalidPasswordAttempts ve PasswordAttemptWindow özelliklerine bakın.

önce sınıfının özelliğinden örneğe bir başvuru SqlMembershipProvider alarak yöntemini doğrudan çağırabilirsinizResetPassword.ProviderMembership Oluşturulan parola en az 14 karakter uzunluğunda veya özelliğinde MinRequiredPasswordLength belirtilen uzunluk olacak ve özelliğinde belirtilen alfasayısal olmayan karakterlerin MinRequiredNonAlphanumericCharacters sayısını içerecektir. Belirtildiyse, parolanın özelliğinde yer alan normal ifadeyi geçirmesi PasswordStrengthRegularExpression garanti değildir.

Baştaki ve sondaki boşluklar tüm parametre değerlerinden kırpılır.

Şunlara uygulanır

Ayrıca bkz.