使用最后5次密码停止用户?(Stop User from using last 5 password

2019-08-17 03:42发布

我有一个要求,强制用户90天之后更改密码。 这是工作细的东西,如以下:

if (memberUser.LastPasswordChangedDate.Date.AddDays(90) < DateTime.Now.Date)
{
     return RedirectToAction("MyChangePasswordMethod", "MyController");
}

不过,我还有一个要求是,最后5个密码使用了不能重复用户 - 不asp.net来,像这样建在什么? 我不能看在前次的密码存储在ASPNET db表什么。 这将是我在我自己的数据库表中存储的最后密码值,然后做一个比较反对在自己的自定义db表对值中输入的用户的新密码字段的问题?

Answer 1:

正如你发现没有什么内置的,所以你必须存储以前的密码为用户和检查清单,以确保它们不会重用一个。

我存储他们所有以前的密码。 这意味着你没有清除旧数据移出表时,他们打5层的变化,如果需求变更不重用过去的10点或15的变化你就会有数据。

您可以存储散列/加密密码,并核对,所以没有得到纯文本版本你的系统的机会。

我有“用户ID”,“密码”和“DateChanged”的表。 然后你就可以找到该用户的最后N个密码和比较反对这个列表中的新密码的散列/加密的版本:

var encryptedPassword = MembershipProvider.EncryptPassword(password);
int numberOfReuse = 5;  // or configurable
var historiesQuery = (from histories in dataContext.GetTable<PasswordHistory>()
                      where histories.UserId == userId
                      orderby histories.PasswordDate descending
                      select histories.Password).Take<string>(numberOfReuse);

return historiesQuery.Contains<string>(enycryptedPassword);

如果密码已被使用此返回true。



文章来源: Stop User from using last 5 password?