【问题标题】:ASP.NET Membership - keep users to use previous passwordsASP.NET Membership - 让用户使用以前的密码
【发布时间】:2011-02-04 13:27:45
【问题描述】:

我为我的客户创建了一个会员登录系统,现在他们不希望用户在创建新密码时使用他最后的 5 个密码之一。

这是内置的东西吗?或者我怎么能做到这一点?

【问题讨论】:

  • 当系统设计成这样时,我只需将密码更改为'hunter3'、'hunter4'、'hunter5'、'hunter6'、'hunter7',然后再改回'****** ' 再次。

标签: asp.net passwords asp.net-membership membership-provider


【解决方案1】:

asp.net 会员登录系统不存在此功能。 必须自己实现,在自动生成密码修改页面。

您需要在某个地方保存以前的用户密码哈希列表,并在接受密码更改之前检查此列表。

更新

从哪里开始:
从所有准备就绪的现有密码更改控件开始。

这是一个密码更改示例。
http://www.asp.net/cssadapters/Membership/ChangePassword.aspx

在此控件中,(您可以轻松拖放到页面上)捕获事件,

<asp:ChangePassword ID="ChangePassword1" runat="server"    
 onchangingpassword="ChangePassword1_ChangingPassword" ... >...

让你的函数检查旧密码

 protected void ChangePassword1_ChangingPassword(object sender, LoginCancelEventArgs e)
 {
  if (PasswordFoundOnList())
  {
   ... show an error....
   e.Cancel = true;
  }
}

现在将最后的密码保存在某处,例如,您可以将它们保存在用户配置文件或数据库中。

这里有一些关于用户个人资料的更多信息。 http://www.asp.net/Learn/Ajax/tutorial-03-cs.aspx

希望这能帮助你做到这一点。

【讨论】:

  • 感谢您的帮助,您是否碰巧知道以前是否有人这样做过,也许有一些代码示例。我不确定这将如何工作。
  • 非常感谢 Aristos。由于密码在数据库中被加密,我想知道如何将其放入另一个表中,然后将它们与用户输入的新密码进行比较。我想我必须在明文 txt 中比较它们?感谢您的帮助。
  • @Steve 密码根本不是keepet/exist,只有它的哈希值,所以你比较的是哈希值,而不是密码。所以你保存并保留通行证的哈希值。玩一下字符串的 GetHash,看看我的意思。密码如何不使用相同的哈希
  • @Aristos - 我不能做正确的事情,因为 2 个哈希值永远不相等。我确保我从数据库中提取的密码与我正在测试的密码相同。我错过了什么? MembershipUser 用户 = Membership.GetUser();字符串 ProviderVar = "AspNetSqlProvider2";字符串用户名 = user.ToString(); MembershipProvider mp = Membership.Providers[ProviderVar]; string HashVar = mp.GetHashCode().ToString();字符串密码=“test44”;字符串 Hash2 = pwd.GetHashCode().ToString(); TextBox1.Text = HashVar.ToString(); TextBox2.Text = Hash2.ToString();
  • @Steve 我现在检查内部,发现使用 MembershipProvider.EncodePassword(string pass, int passwordFormat, string salt),(不是 GetHasCode())。现在我必须走了 - 创建一个新问题,希望比我早一些答案。询问女巫的方式,您可以在保存到 asp.net 会员资格之前对密码进行编码,并获得编码结果。
【解决方案2】:

查看 Ronan Moriarty 的这篇很棒的帖子:

Implementing Password History using a Custom Membership Provider

这是一篇内容广泛的帖子,我按照他的描述使用了选项 2。它帮助我实现了你的要求。它在这里工作得很好。

【讨论】:

  • 该链接已失效 :(
猜你喜欢
  • 2011-12-02
  • 2012-01-18
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
相关资源
最近更新 更多