【问题标题】:WebSecurity on WebMatrix.WebData Simple Membership Retrieve PasswordWebMatrix.WebData 上的 WebSecurity 简单成员资格检索密码
【发布时间】: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


【解决方案1】:

绝对没有办法从 webmatrix 安全实施中获取纯文本密码。密码是加盐和散列的,你不能反转它来获得纯文本密码,这是一件好事。

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

【讨论】:

  • 让我们补充一点,对于 any 安全身份验证系统(不仅是 ASP.NET SimpleMembershipProvider),无法取回明文密码是一般原则。
猜你喜欢
  • 2018-06-20
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 2013-12-27
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多