Aracılığıyla paylaş


SqlMembershipProvider.ChangePasswordQuestionAndAnswer Yöntem

Tanım

SQL Server üyelik veritabanındaki bir kullanıcı için parola sorusunu ve yanıtını güncelleştirir.

public:
 override bool ChangePasswordQuestionAndAnswer(System::String ^ username, System::String ^ password, System::String ^ newPasswordQuestion, System::String ^ newPasswordAnswer);
public override bool ChangePasswordQuestionAndAnswer (string username, string password, string newPasswordQuestion, string newPasswordAnswer);
override this.ChangePasswordQuestionAndAnswer : string * string * string * string -> bool
Public Overrides Function ChangePasswordQuestionAndAnswer (username As String, password As String, newPasswordQuestion As String, newPasswordAnswer As String) As Boolean

Parametreler

username
String

Parola sorusunu ve yanıtını değiştirecek kullanıcı.

password
String

Belirtilen kullanıcının parolası.

newPasswordQuestion
String

Belirtilen kullanıcı için yeni parola sorusu.

newPasswordAnswer
String

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

Döndürülenler

true güncelleştirme başarılı olursa; aksi takdirde , false. false yanlışsa, kullanıcı kilitliyse password veya kullanıcı veritabanında yoksa değeri de döndürülür.

Özel durumlar

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

-veya-

password boş bir dizedir veya 128 karakterden uzundur.

-veya-

newPasswordQuestion boş bir dizedir veya 256 karakterden uzundur.

-veya-

newPasswordAnswer boş bir dizedir veya 128 karakterden uzundur.

-veya-

kodlanmış sürümü newPasswordAnswer 128 karakterden uzundur.

username, null değeridir.

-veya-

password, null değeridir.

-veya-

newPasswordQuestionve şeklindedir nulltrue.RequiresQuestionAndAnswer

-veya-

newPasswordAnswerve şeklindedir nulltrue.RequiresQuestionAndAnswer

Veritabanında parola sorusu ve yanıtı değiştirilirken bir hata oluştu.

Örnekler

Aşağıdaki kod örneği, kullanıcı için parola sorusunu ve yanıtını güncelleştirir.

Not

Bu örnek, Web.config dosyasında belirtilen öğesini defaultProvider çağırmak SqlMembershipProvider için sınıfının özelliğini Membership kullanırProvider. 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 ChangePasswordQuestion_OnClick(object sender, EventArgs args)
{
  try
  {
    if (Membership.Provider.ChangePasswordQuestionAndAnswer(User.Identity.Name,
                                                            PasswordTextbox.Text, 
                                                            QuestionTextbox.Text, 
                                                            AnswerTextbox.Text))
      Msg.Text = "Password question and answer changed.";
    else
      Msg.Text = "Change failed. Please reenter your values and try again.";
  }
  catch (System.Configuration.Provider.ProviderException e)
  {
    Msg.Text = "Change failed. Please reenter your values and try again.";
  }
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Change Password Question and Answer</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Change Password Question and Answer for <%=User.Identity.Name%></h3>

  <asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />

  <table cellpadding="3" border="0">
    <tr>
      <td>Password:</td>
      <td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
                                    ControlToValidate="PasswordTextbox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>New Password Question:</td>
      <td><asp:Textbox id="QuestionTextbox" MaxLength="256" Columns="60" runat="server" /></td>
      <td><asp:RequiredFieldValidator id="QuestionRequiredValidator" runat="server"
                                    ControlToValidate="QuestionTextbox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>New Password Answer:</td>
      <td><asp:Textbox id="AnswerTextbox" MaxLength="128" Columns="60" runat="server" /></td>
      <td><asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
                                    ControlToValidate="AnswerTextbox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td></td>
      <td><asp:Button id="ChangePasswordQuestionButton" 
                      Text="Change Password Question and Answer" 
                      OnClick="ChangePasswordQuestion_OnClick" 
                      runat="server" /></td>
    </tr>
  </table>
</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 ChangePasswordQuestion_OnClick(sender As Object, args As EventArgs)

  Try
    If Membership.Provider.ChangePasswordQuestionAndAnswer(User.Identity.Name, _
                                                          PasswordTextbox.Text, _ 
                                                          QuestionTextbox.Text, _
                                                          AnswerTextbox.Text) Then
      Msg.Text = "Password question and answer changed."
    Else
      Msg.Text = "Change failed. Please reenter your values and try again."
    End If
  Catch e As System.Configuration.Provider.ProviderException
    Msg.Text = "Change failed. Please reenter your values and try again."
  End Try

End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Change Password Question and Answer</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Change Password Question and Answer for <%=User.Identity.Name%></h3>

  <asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />

  <table cellpadding="3" border="0">
    <tr>
      <td>Password:</td>
      <td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
                                    ControlToValidate="PasswordTextbox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>New Password Question:</td>
      <td><asp:Textbox id="QuestionTextbox" MaxLength="256" Columns="60" runat="server" /></td>
      <td><asp:RequiredFieldValidator id="QuestionRequiredValidator" runat="server"
                                    ControlToValidate="QuestionTextbox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>New Password Answer:</td>
      <td><asp:Textbox id="AnswerTextbox" MaxLength="128" Columns="60" runat="server" /></td>
      <td><asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
                                    ControlToValidate="AnswerTextbox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td></td>
      <td><asp:Button id="ChangePasswordQuestionButton" 
                      Text="Change Password Question and Answer" 
                      OnClick="ChangePasswordQuestion_OnClick" 
                      runat="server" /></td>
    </tr>
  </table>
</form>

</body>
</html>

Açıklamalar

Bu yöntem, ASP.NET uygulamasının MembershipUser yapılandırma dosyasında (Web.config) belirtilen SQL Server veritabanındaki bir kullanıcının parola sorusunu ve yanıtını güncelleştirmek için sınıfı tarafından çağrılır. Parola yanıtı özelliğinde PasswordFormat belirtilen biçim kullanılarak şifrelenir.

Parola sorusu ve yanıtı gerektirmek, kullanıcının parolasını alırken veya sıfırlarken ek bir güvenlik katmanı sağlar. Kullanıcı adı oluştururken, kullanıcı daha sonra unutulan parolayı almak veya sıfırlamak için kullanılabilecek bir soru ve yanıt sağlayabilir. yöntemi, ChangePasswordQuestionAndAnswer üyelik kullanıcısı için parola sorusunu ve yanıtını güncelleştirir.

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

Parola sorusunun uzunluk üst sınırı 256 karakterdir. Parola yanıtı için uzunluk üst sınırı 128 karakterdir.

Daha fazla bilgi için bkz. RequiresQuestionAndAnswer, ResetPassword ve GetPassword.

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

Şunlara uygulanır

Ayrıca bkz.