【发布时间】:2013-10-18 02:40:31
【问题描述】:
我们的模块具有找回密码功能,如果用户忘记了密码,他可以找回密码,系统将通过电子邮件发送。我们在 MVC4 上使用 SimpleMembership。我检查了 WebSecurity 类,但它没有 "GetPassword" 方法。我试图搜索网络,但我找到了这个实现。
var user = System.Web.Security.Membership.GetUser(userName);
password = user.GetPassword();
GetPassword 出现错误,提示“不支持指定的方法。”。我还在 web.config 中添加了以下内容,但即使用户对象具有值,我仍然收到提到的错误。
<membership defaultProvider="simple">
<providers>
<clear />
<add name="simple" type="WebMatrix.WebData.SimpleMembershipProvider,WebMatrix.WebData"
enablePasswordRetrieval="true"
enablePasswordReset="true" requiresQuestionAndAnswer="false"/>
</providers>
...
还有其他方法可以找回用户的简单会员密码吗?我可以查询 pages_Membership 表,但密码是加密的。有人知道这个的解密算法吗?我尝试了FormsAuthentication.Decrypt(encryptedpassword);,但出现错误“'encryptedTicket' 参数的值无效。”尽管传递的密码是加密的。
请帮忙。
【问题讨论】:
-
只是一个建议,我认为最好只向他们发送一封电子邮件,让他们更改/重置旧密码,而不是显示旧密码。
-
@WannaCSharp 这是另一个模块,我们也有。我们的项目有两个与密码相关的模块。 1. 忘记密码,即忘记密码的邮件。 2.重置密码,允许用户重置他的密码。
-
我认为没有办法使用 SimpleMembership 以明文形式检索密码,因为它使用单向哈希来加密密码。
-
@WannaCSharp 我看过这篇文章。 stackoverflow.com/questions/14985003/… 查看 Giorgio Minardi 的回答。
-
密码未加密。它是散列的。两者有相当大的区别。您无法以纯文本形式检索密码。如果用户忘记密码,您将不得不重置密码。
标签: security asp.net-mvc-4 membership-provider simplemembership