要回答有关更新密码的特定问题,请执行以下操作:
对于.aspx页或.ascx控件,可以使用以下标记:
<p style="margin-bottom: 20px;">
A security question is used to assist you in logging in.
Because of this, we ask that you provide your password for confirmation
of wanting to change the security question associated with your account.
</p>
<ul class="formFields">
<li>
<label>
Question</label><asp:TextBox ID="uxNewQuestion" runat="server" />
<asp:RequiredFieldValidator ID="uxNewRequired"
runat="server" ControlToValidate="uxNewQuestion"
ErrorMessage="New Question is required."
ToolTip="New Question is required."
ValidationGroup="ChangeQuestion">*</asp:RequiredFieldValidator>
</li>
<li>
<label>
Answer</label><asp:TextBox ID="uxNewAnswer" runat="server" />
<asp:RequiredFieldValidator ID="uxConfirmRequired"
runat="server" ControlToValidate="uxNewAnswer"
ErrorMessage="Must Confirm Question"
ToolTip="Must Confirm Question" ValidationGroup="ChangeQuestion">
*</asp:RequiredFieldValidator>
</li>
<li>
<label>
Your Password:</label>
<asp:TextBox ID="uxPassword" runat="server" TextMode="Password">
</asp:TextBox>
<asp:RequiredFieldValidator ID="uxPasswordRequired"
runat="server" ControlToValidate="uxPassword"
ErrorMessage="Must Provide Correct Password"
ToolTip="Must Provide Correct Password"
ValidationGroup="ChangeQuestion">*</asp:RequiredFieldValidator>
</li>
</ul>
<p>
<asp:Button ID="uxSave" runat="server" Text="Save Security Question"
OnClick="uxSave_Click"
ValidationGroup="ChangeQuestion" />
<asp:Button ID="Button1" runat="server" Text="Cancel"
OnClick="uxCancel_Click" CausesValidation="False" /></p>
<div style="margin-top: 20px;">
<asp:Literal ID="uxFailureText" runat="server"
EnableViewState="False"></asp:Literal>
</div>
对于背后的代码,您至少需要这么多代码:
MembershipUser user = Membership.GetUser(GuidUserID);
string password = uxPassword.Text;
string newquestion = uxNewQuestion.Text;
string newanswer = uxNewAnswer.Text;
if (user.ChangePasswordQuestionAndAnswer(password, newquestion, newanswer))
{
Response.Redirect("~/Admin/Default.aspx", true);
}
else
{
uxFailureText.Text = string.Format("<p class='error'>There has been a
problem updating your security question.</p>");
}
如果你注意到控件的简介文本说我们需要密码来确认更改。这是正确的,因为成员资格提供程序方法需要将当前密码与新旧安全问题一起传入。大多数密码都是单向加密的,因此我将此控件作为自助服务类型的控件提供给用户,而不是在管理方面。
祝你好运,希望这对你有所帮助。