我们的模块具有检索密码功能,因此如果用户忘记了密码,他可以检索密码,系统将通过电子邮件发送密码。我们在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>
...
是否有其他方法可以检索用户的简单会员密码?我可以在webpages_Membership表上查询,但密码是加密的。有谁知道这个解密算法?我尝试了FormsAuthentication.Decrypt(encryptedpassword);
,但我收到错误“'encryptedTicket'参数的值无效。”虽然传递的密码是加密的。
请帮忙。
答案 0 :(得分:2)
绝对没有办法从webmatrix安全实施中获取您提出的明文密码。密码被盐渍和散列,你不能反过来获得纯文本密码,这是一件好事。
webmatrix提供商确实提供了支持创建密码重置令牌所需的所有功能,这些令牌可以发送到已注册的电子邮件地址,而不是以纯文本形式发送密码。