ASP.NET RequiresQuestionAndAnswer false break GetPassword

时间:2011-07-13 14:44:38

标签: asp.net security membership

有点奇怪的情况。我将RequiresQuestionAndAnswer设置为false,因为管理员需要能够创建帐户而不填写问题和答案,他希望用户设置该部分。

因此,RequiresQuestionAndAnswer为false,用户登录并被提示设置自己的安全密码和答案(我自己编码但是使用了一些成员资格方法来存储信息),这些密码成功存储在数据库的DB中aspnet_membership表,就像最初使用密码问题和答案创建用户一样。

然后,在ForgotYourPassword页面上,当尝试使用Membership.Provider.GetPassword(username,passwordanswer)时,即使密码答案错误,也会生成密码。

这似乎是aspnet的一个错误,因为将RequiresQuestionAndAnswer设置为false对我意味着:

“我不需要这个来创建用户,但我仍然可以使用它。”

而asp.net意味着:

“我不需要这个来创建用户,我永远不会使用它,所以它将被忽略。”

任何人都知道如何解决这个问题?我需要能够确认提供的安全答案是否正确并重置或获取用户的密码。我使用的加密密码没有散列,因此应该可以进行检索。

1 个答案:

答案 0 :(得分:1)

正如您可能在此发现的那样,内置提供商的灵活性有限。解决此问题的最佳方法是让您的应用在幕后生成问题和答案,以便您可以通过它。