Membership.RequiresQuestionAndAnswer プロパティ
アセンブリ: System.Web (system.web.dll 内)


パスワードの質問と解答を要求することにより、ユーザー パスワードを取得またはリセットする際のセキュリティをさらに高めることができます。ユーザーは、ユーザー名を作成するときに、後で忘れたパスワードを取得したりリセットしたりする際に使用できるパスワードの質問と解答を指定できます。
ResetPassword または GetPassword が呼び出されると、RequiresQuestionAndAnswer がチェックされます。RequiresQuestionAndAnswer が true で、入力されたパスワードの解答が null 参照 (Visual Basic では Nothing) の場合、.NET Framework 付属のプロバイダは NotSupportedException をスローします。
EnablePasswordReset と EnablePasswordRetrieval の両方が false でも、RequiresQuestionAndAnswer を使用して、新規ユーザーの作成時に強制的に質問と解答を作成させることができます。ただし、その質問と解答は使用されません。MembershipUser クラスを使用することにより、質問を取得できます。

次のコード例は、ASP.NET アプリケーションの Web.config ファイルの system.web セクションにある membership 要素 (ASP.NET 設定スキーマ) 要素を示しています。この例では、アプリケーションが SqlMembershipProvider のインスタンスを使用するように指定し、パスワードのリセットを有効にし、リセット時にパスワードの解答を要求します。
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20"> <providers> <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="SqlServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" passwordFormat="Hashed" applicationName="MyApplication" /> </providers> </membership>
RequiresQuestionAndAnswer の値をチェックし、ユーザーの作成時にパスワードの質問と解答を入力するためのコントロールを追加するコード例を次に示します。
<%@ Page Language="VB" %> <%@ Import Namespace="System.Web.Security" %> <script runat="server"> Public Sub CreateUser_OnClick(sender As Object, args As EventArgs) ' Create new user and retrieve create status result. Dim status As MembershipCreateStatus Dim passwordQuestion As String = "" Dim passwordAnswer As String = "" If Membership.RequiresQuestionAndAnswer Then passwordQuestion = PasswordQuestionTextbox.Text passwordAnswer = PasswordAnswerTextbox.Text End If Try Dim newUser As MembershipUser = Membership.CreateUser(UsernameTextbox.Text, PasswordTextbox.Text, _ EmailTextbox.Text, passwordQuestion , _ passwordAnswer, True, status) If newUser Is Nothing Then Msg.Text = GetErrorMessage(status) Else Response.Redirect("login.aspx") End If Catch Msg.Text = "An exception occurred creating the user." End Try End Sub Public Function GetErrorMessage(status As MembershipCreateStatus) As String Select Case status Case MembershipCreateStatus.DuplicateUserName: Return "Username already exists. Please enter a different user name." Case MembershipCreateStatus.DuplicateEmail: Return "A username for that e-mail address already exists. Please enter a different e-mail address." Case MembershipCreateStatus.InvalidPassword: Return "The password provided is invalid. Please enter a valid password value." Case MembershipCreateStatus.InvalidEmail: Return "The e-mail address provided is invalid. Please check the value and try again." Case MembershipCreateStatus.InvalidAnswer: Return "The password retrieval answer provided is invalid. Please check the value and try again." Case MembershipCreateStatus.InvalidQuestion: Return "The password retrieval question provided is invalid. Please check the value and try again." Case MembershipCreateStatus.InvalidUserName Return "The user name provided is invalid. Please check the value and try again." Case MembershipCreateStatus.ProviderError: Return "The authentication provider returned an error. Please verify your entry and try again. If the problem persists, please contact your system administrator." Case MembershipCreateStatus.UserRejected: Return "The user creation request has been canceled. Please verify your entry and try again. If the problem persists, please contact your system administrator." Case Else: Return "An unknown error occurred. Please verify your entry and try again. If the problem persists, please contact your system administrator." End Select End Function </script> <html> <head> <title>Create User</title> </head> <body> <form runat="server"> <h3>Create New User</h3> <asp:Label id="Msg" ForeColor="maroon" runat="server" /> <table CellPadding="3" border="0"> <tr> <td>Username:</td> <td><asp:Textbox id="UsernameTextbox" runat="server" /></td> <td><asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server" ControlToValidate="UserNameTextbox" ForeColor="red" Display="Static" ErrorMessage="Required" /></td> </tr> <tr> <td>Password:</td> <td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td> <td><asp:RequiredFieldValidator id="PasswordRequiredValidator" runat="server" ControlToValidate="PasswordTextbox" ForeColor="red" Display="Static" ErrorMessage="Required" /></td> </tr> <tr> <td>Confirm Password:</td> <td><asp:Textbox id="PasswordConfirmTextbox" runat="server" TextMode="Password" /></td> <td><asp:RequiredFieldValidator id="PasswordConfirmRequiredValidator" runat="server" ControlToValidate="PasswordConfirmTextbox" ForeColor="red" Display="Static" ErrorMessage="Required" /> <asp:CompareValidator id="PasswordConfirmCompareValidator" runat="server" ControlToValidate="PasswordConfirmTextbox" ForeColor="red" Display="Static" ControlToCompare="PasswordTextBox" ErrorMessage="Confirm password must match password." /> </td> </tr> <tr> <td>Email Address:</td> <td><asp:Textbox id="EmailTextbox" runat="server" /></td> <td><asp:RequiredFieldValidator id="EmailRequiredValidator" runat="server" ControlToValidate="EmailTextbox" ForeColor="red" Display="Static" ErrorMessage="Required" /></td> </tr> <% If Membership.RequiresQuestionAndAnswer Then %> <tr> <td>Password Question:</td> <td><asp:Textbox id="PasswordQuestionTextbox" runat="server" /></td> <td><asp:RequiredFieldValidator id="PasswordQuestionRequiredValidator" runat="server" ControlToValidate="PasswordQuestionTextbox" ForeColor="red" Display="Static" ErrorMessage="Required" /></td> </tr> <tr> <td>Password Answer:</td> <td><asp:Textbox id="PasswordAnswerTextbox" runat="server" /></td> <td><asp:RequiredFieldValidator id="PasswordAnswerRequiredValidator" runat="server" ControlToValidate="PasswordAnswerTextbox" ForeColor="red" Display="Static" ErrorMessage="Required" /></td> </tr> <% End If %> <tr> <td></td> <td><asp:Button id="CreateUserButton" Text="Create User" OnClick="CreateUser_OnClick" runat="server" /></td> </tr> </table> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Security" %> <script runat="server"> public void CreateUser_OnClick(object sender, EventArgs args) { // Create new user and retrieve create status result. MembershipCreateStatus status; string passwordQuestion = ""; string passwordAnswer = ""; if (Membership.RequiresQuestionAndAnswer) { passwordQuestion = PasswordQuestionTextbox.Text; passwordAnswer = PasswordAnswerTextbox.Text; } try { MembershipUser newUser = Membership.CreateUser(UsernameTextbox.Text, PasswordTextbox.Text, EmailTextbox.Text, passwordQuestion , passwordAnswer, true, out status); if (newUser == null) { Msg.Text = GetErrorMessage(status); } else { Response.Redirect("login.aspx"); } } catch { Msg.Text = "An exception occurred creating the user."; } } public string GetErrorMessage(MembershipCreateStatus status) { switch (status) { case MembershipCreateStatus.DuplicateUserName: return "Username already exists. Please enter a different user name."; case MembershipCreateStatus.DuplicateEmail: return "A username for that e-mail address already exists. Please enter a different e-mail address."; case MembershipCreateStatus.InvalidPassword: return "The password provided is invalid. Please enter a valid password value."; case MembershipCreateStatus.InvalidEmail: return "The e-mail address provided is invalid. Please check the value and try again."; case MembershipCreateStatus.InvalidAnswer: return "The password retrieval answer provided is invalid. Please check the value and try again."; case MembershipCreateStatus.InvalidQuestion: return "The password retrieval question provided is invalid. Please check the value and try again."; case MembershipCreateStatus.InvalidUserName: return "The user name provided is invalid. Please check the value and try again."; case MembershipCreateStatus.ProviderError: return "The authentication provider returned an error. Please verify your entry and try again. If the problem persists, please contact your system administrator."; case MembershipCreateStatus.UserRejected: return "The user creation request has been canceled. Please verify your entry and try again. If the problem persists, please contact your system administrator."; default: return "An unknown error occurred. Please verify your entry and try again. If the problem persists, please contact your system administrator."; } } </script> <html> <head> <title>Create User</title> </head> <body> <form runat="server"> <h3>Create New User</h3> <asp:Label id="Msg" ForeColor="maroon" runat="server" /><BR> <table CellPadding="3" border="0"> <tr> <td>Username:</td> <td><asp:Textbox id="UsernameTextbox" runat="server" /></td> <td><asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server" ControlToValidate="UserNameTextbox" ForeColor="red" Display="Static" ErrorMessage="Required" /></td> </tr> <tr> <td>Password:</td> <td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td> <td><asp:RequiredFieldValidator id="PasswordRequiredValidator" runat="server" ControlToValidate="PasswordTextbox" ForeColor="red" Display="Static" ErrorMessage="Required" /></td> </tr> <tr> <td>Confirm Password:</td> <td><asp:Textbox id="PasswordConfirmTextbox" runat="server" TextMode="Password" /></td> <td><asp:RequiredFieldValidator id="PasswordConfirmRequiredValidator" runat="server" ControlToValidate="PasswordConfirmTextbox" ForeColor="red" Display="Static" ErrorMessage="Required" /> <asp:CompareValidator id="PasswordConfirmCompareValidator" runat="server" ControlToValidate="PasswordConfirmTextbox" ForeColor="red" Display="Static" ControlToCompare="PasswordTextBox" ErrorMessage="Confirm password must match password." /> </td> </tr> <tr> <td>Email Address:</td> <td><asp:Textbox id="EmailTextbox" runat="server" /></td> <td><asp:RequiredFieldValidator id="EmailRequiredValidator" runat="server" ControlToValidate="EmailTextbox" ForeColor="red" Display="Static" ErrorMessage="Required" /></td> </tr> <% if (Membership.RequiresQuestionAndAnswer) { %> <tr> <td>Password Question:</td> <td><asp:Textbox id="PasswordQuestionTextbox" runat="server" /></td> <td><asp:RequiredFieldValidator id="PasswordQuestionRequiredValidator" runat="server" ControlToValidate="PasswordQuestionTextbox" ForeColor="red" Display="Static" ErrorMessage="Required" /></td> </tr> <tr> <td>Password Answer:</td> <td><asp:Textbox id="PasswordAnswerTextbox" runat="server" /></td> <td><asp:RequiredFieldValidator id="PasswordAnswerRequiredValidator" runat="server" ControlToValidate="PasswordAnswerTextbox" ForeColor="red" Display="Static" ErrorMessage="Required" /></td> </tr> <% } %> <tr> <td></td> <td><asp:Button id="CreateUserButton" Text="Create User" OnClick="CreateUser_OnClick" runat="server" /></td> </tr> </table> </form> </body> </html>

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からMembership.RequiresQuestionAndAnswer プロパティを検索する場合は、下記のリンクをクリックしてください。

- Membership.RequiresQuestionAndAnswer プロパティのページへのリンク