SqlMembershipProvider.ResetPassword(String, String) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ユーザーのパスワードをリセットして、自動的に生成された新しいパスワードにします。
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
パラメーター
- username
- String
パスワードをリセットするユーザー。
- passwordAnswer
- String
指定したユーザーのパスワードの解答。
戻り値
指定したユーザーの新しいパスワード。
例外
EnablePasswordReset が false
に設定されます。
username
がメンバーシップ データベース内に見つかりません。
- または -
パスワード変更アクションが ValidatingPassword イベントのサブスクライバーによってキャンセルされ、かつ FailureInformation プロパティが null
です。
- または -
データベースからパスワードを取得しているときにエラーが発生しました。
username
が空の文字列 ("") であるか、コンマを含んでいるか、または 256 文字を超えています。
- または -
passwordAnswer
が空の文字列であるか 128 文字を超えていて、RequiresQuestionAndAnswer が true
です。
- または -
エンコードされた passwordAnswer
が 128 文字を超えています。
ハンドルされていない例外が発生しました。
例
次のコード例では、ユーザーのパスワードをリセットし、自動的に生成された新しいパスワードを返します。
注意
この例では、 クラスを Membership 使用して、 SqlMembershipProvider Web.config ファイル内の として defaultProvider
指定された を呼び出します。 型SqlMembershipProviderとして既定のプロバイダーにアクセスする必要がある場合は、 クラスの プロパティをProviderMembershipキャストできます。 特定のプロバイダーの種類として他の構成済みプロバイダーにアクセスするには、 クラスの プロパティを使用 Providers して構成された名前でアクセスし、特定の Membership プロバイダーの種類としてキャストできます。
<%@ 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>
注釈
このメソッドは、 クラスによって呼び出され Membership 、ASP.NET アプリケーションの構成ファイル (Web.config) で指定された SQL Server データベース内のユーザーのパスワードを、ランダムに生成された新しい値にリセットします。 新しいパスワードが返されます。
注意
メソッドによって作成された ResetPassword ランダムなパスワードは、 プロパティで PasswordStrengthRegularExpression 正規表現を渡す保証はありません。 ただし、ランダムなパスワードは、 プロパティと プロパティによって確立された条件をMinRequiredPasswordLengthMinRequiredNonAlphanumericCharacters満たします。
メソッドはResetPassword、 プロパティが に設定Hashed
されている場合PasswordFormatに最もよく使用されます。 ユーザーがハッシュされたパスワードを忘れた場合、パスワードを取得できません。 ただし、ユーザーが正しいパスワードの回答を入力した場合、プロバイダーはパスワードを新しい自動的に生成されたパスワードにリセットできます。
メソッドに正しくないパスワード応答が指定されている ResetPassword 場合、無効なパスワード試行を追跡する内部カウンターは 1 ずつインクリメントされます。 これにより、ユーザーがロックアウトされ、 メソッドの呼び出し UnlockUser によってロック状態がクリアされるまでログオンできなくなる可能性があります。 正しいパスワード応答が指定され、ユーザーが現在ロックアウトされていない場合、無効なパスワード応答の試行を追跡する内部カウンターはゼロにリセットされます。 詳細については、MaxInvalidPasswordAttempts プロパティおよび PasswordAttemptWindow プロパティを参照してください。
最初に クラスの ResetPassword プロパティMembershipからインスタンスへの参照を取得することで、 SqlMembershipProvider メソッドをProvider直接呼び出すことができます。 生成されるパスワードは、少なくとも 14 文字の長さ、または プロパティで指定された長さになり、プロパティで MinRequiredPasswordLength 指定された英数字以外の文字の数が MinRequiredNonAlphanumericCharacters 含まれます。 パスワードが指定されている場合、プロパティに含まれる正規表現を PasswordStrengthRegularExpression 渡す保証はありません。
先頭と末尾のスペースは、すべてのパラメーター値からトリミングされます。
適用対象
こちらもご覧ください
.NET