如果您使用的是 asp.net forms 身份验证,它已经为用户提供了使用安全问题重置密码的机制。这可以在 Web.config 中进行配置,并与密码恢复控件一起使用,该控件是 ASP.net 登录控件的一部分。
在您的会员提供者部分下的 web.config 中设置:
requiresQuestionAndAnswer - 当设置为 true 时,将需要 Question 视图来检索或重置用户的密码。当设置为 false 时,问题视图不会显示给用户。
此处使用密码恢复控件是示例代码:
<asp:PasswordRecovery ID="PasswordRecovery1" runat="server">
<QuestionTemplate>
<h2>Forgot Password</h2>
Hello <asp:Literal ID="UserName" runat="server"></asp:Literal><br />
Please answer your password question : <br />
<asp:Literal ID="Question" runat="server"></asp:Literal>
<asp:TextBox ID="Answer" runat="server"></asp:TextBox><br />
<asp:Button ID="SubmitButton" runat="server" Text="Send Answer By Mail"
CommandName="Submit"/><br />
<asp:Literal ID="FailureText" runat="server"></asp:Literal>
</QuestionTemplate>
</asp:PasswordRecovery>
有关使用 ASP.net 登录控件的更多信息,请访问http://quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/login/default.aspx
至于不发送电子邮件,您可以通过在密码恢复控件中添加 OnSendingMail="CancelEmail" 来取消电子邮件,然后在后面添加如下代码,然后在屏幕上显示新的重置密码。
Sub CancelEmail(ByVal sender As Object, ByVal e As MailMessageEventArgs)
e.Cancel = True
End Sub
希望有帮助!