2

问题 1 - 我想让用户能够在没有电子邮件和生成密码的情况下重置密码。用户通过写入的自定义表单根据我们的内部数据库验证自己。然后,我想提示他们输入用户名和安全问答。我不知道如何进行安全 QA,所以我决定自定义密码恢复控制。我不希望它发送带有新密码的电子邮件。相反,如果他们得到正确的用户名和问题,我想将他们发送到密码重置页面。

有没有办法向他们询问安全问题并通过编写自定义代码或使用预构建组件进行比较。另外,他们重置密码后如何设置密码?

问题 2- 我正在处理“忘记用户名”。它将首先验证我们的数据库。根据他们输入的内容,我将能够在表单身份验证数据库中匹配并找到用户名和用户 ID。我想问他们安全问题,但不知道如何根据他们输入的内容创建哈希,以比较用户在 aspnet 数据库中的内容。有没有办法做到这一点?

谢谢!!!

4

1 回答 1

6

如果您使用的是 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

希望有帮助!

于 2009-02-06T22:49:16.117 回答