ASP.NET成员资格-保持用户使用以前的密码

ASP.NET成员资格-保持用户使用以前的密码,asp.net,passwords,asp.net-membership,membership-provider,Asp.net,Passwords,Asp.net Membership,Membership Provider,我为我的客户创建了一个会员登录系统,现在他们不希望用户在创建新密码时使用其最后5个密码中的一个 这是内置的吗?或者我如何实现这一点?此功能在asp.net成员登录系统上不存在。 您必须在更改密码的自动创建页面上自行实现 在接受密码更改之前,您需要在某个地方保存以前的用户密码哈希列表,并检查此列表 更新 从何处开始: 从准备就绪的现有密码更改控件开始 下面是一个密码更改示例。 在此控件中,(您可以在页面上轻松拖放)捕获事件 <asp:ChangePassword ID="ChangePas

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


这是内置的吗?或者我如何实现这一点?

此功能在asp.net成员登录系统上不存在。 您必须在更改密码的自动创建页面上自行实现

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

更新 从何处开始:
从准备就绪的现有密码更改控件开始

下面是一个密码更改示例。

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

<asp:ChangePassword ID="ChangePassword1" runat="server"    
 onchangingpassword="ChangePassword1_ChangingPassword" ... >...
现在将最后的密码保存在某个地方,例如,您可以将其保存在用户配置文件或数据库中

以下是有关用户配置文件的更多信息。


希望这能帮助你成功。

查看Ronan Moriarty的这篇精彩文章:


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

当系统设计成这样时,我只需将密码更改为“hunter3”、“hunter4”、“hunter5”、“hunter6”、“hunter7”,然后再返回到“*******”。感谢您的帮助,您是否知道以前是否有人这样做过,也许有一些代码示例。我不知道这是怎么回事。非常感谢亚里士多德。由于密码在数据库中是加密的,我想知道如何将其放入另一个表中,然后将其与用户键入的新密码进行比较。我想我必须用清晰的文本比较它们?谢谢您的帮助。@Steve密码根本不是keepet/exist,只有它的哈希值,所以您比较的是哈希值,而不是密码。因此,保存并保留过程的哈希值。用一个字符串的GetHash玩一点,看看我的意思。然而,密码却没有使用相同的密码hash@Aristos-我一定做得不对,因为2个哈希值永远不相等。我确保从DB中提取的pwd与我正在测试的pwd相同。我错过了什么?MembershipUser=Membership.GetUser();字符串ProviderVar=“AspNetSqlProvider2”;字符串UsrName=user.ToString();MembershipProvider mp=Membership.Providers[ProviderVar];字符串HashVar=mp.GetHashCode().ToString();字符串pwd=“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成员资格之前,询问您可以对密码进行编码的方法,并获得编码结果。该链接已失效:(
 protected void ChangePassword1_ChangingPassword(object sender, LoginCancelEventArgs e)
 {
  if (PasswordFoundOnList())
  {
   ... show an error....
   e.Cancel = true;
  }
}