WebMatrix.WebData上的WebSecurity简单成员身份检索密码

WebMatrix.WebData上的WebSecurity简单成员身份检索密码,security,asp.net-mvc-4,membership-provider,simplemembership,Security,Asp.net Mvc 4,Membership Provider,Simplemembership,我们的模块具有检索密码功能,因此,如果用户忘记了密码,他可以检索密码,系统将通过电子邮件发送。我们在MVC4上使用SimpleMembership。我检查了WebSecurity类,但它没有“GetPassword”方法。我试图搜索网络,但是我找到了这个实现 var user = System.Web.Security.Membership.GetUser(userName); password = user.GetPassword(); 我在GetPassword上出错,说“不支持指定的方法

我们的模块具有检索密码功能,因此,如果用户忘记了密码,他可以检索密码,系统将通过电子邮件发送。我们在MVC4上使用SimpleMembership。我检查了WebSecurity类,但它没有“GetPassword”方法。我试图搜索网络,但是我找到了这个实现

var user = System.Web.Security.Membership.GetUser(userName);
password = user.GetPassword();
我在GetPassword上出错,说“不支持指定的方法”。我还在我的web.config中添加了以下内容,但是我仍然得到了提到的错误,即使user对象有值

<membership defaultProvider="simple">
 <providers>
 <clear />
<add name="simple" type="WebMatrix.WebData.SimpleMembershipProvider,WebMatrix.WebData"
enablePasswordRetrieval="true" 
enablePasswordReset="true" requiresQuestionAndAnswer="false"/>
 </providers>
...

...
是否有其他方法检索用户的简单成员身份密码?我可以查询网页上的会员表,但密码是加密的。有人知道这个的解密算法吗?我尝试了
FormsAuthentication.Decrypt(加密密码)但我收到错误“encryptedTicket参数的值无效”。尽管传递的密码是加密的


请提供帮助。

从webmatrix安全实施中获取纯文本密码是绝对无法实现您的建议的。密码是经过盐渍和散列处理的,您无法将其反转以获得纯文本密码,这是一件好事


webmatrix提供程序提供了创建密码重置令牌所需的所有功能,该令牌可以发送到已注册的电子邮件地址,而不是以纯文本形式发送密码。

只是一个建议,我认为最好只向他们发送一封允许他们更改/重置旧密码的电子邮件,而不是显示他们的旧密码。@WannaCSharp这是另一个模块,我们也有。我们的项目有两个与密码相关的模块。1.忘记密码,即通过电子邮件发送忘记的密码。2.重置密码,允许用户重置其密码。我认为没有办法用SimpleMembership以明文检索密码,因为它使用单向散列来加密密码。@WannaCSharp我看过这篇文章。请参阅Giorgio Minardi的答案。密码未加密。它是散列的。这两者之间有很大的区别。无法以纯文本检索密码。如果用户忘记了密码,您将不得不重新设置密码。让我们补充一下,对于任何安全身份验证系统(不仅仅是ASP.NET SimpleMembershipProvider),无法获取明文密码是一个普遍原则。