我有一个要求,强制用户90天之后更改密码。 这是工作细的东西,如以下:
if (memberUser.LastPasswordChangedDate.Date.AddDays(90) < DateTime.Now.Date)
{
return RedirectToAction("MyChangePasswordMethod", "MyController");
}
不过,我还有一个要求是,最后5个密码使用了不能重复用户 - 不asp.net来,像这样建在什么? 我不能看在前次的密码存储在ASPNET db表什么。 这将是我在我自己的数据库表中存储的最后密码值,然后做一个比较反对在自己的自定义db表对值中输入的用户的新密码字段的问题?
正如你发现没有什么内置的,所以你必须存储以前的密码为用户和检查清单,以确保它们不会重用一个。
我存储他们所有以前的密码。 这意味着你没有清除旧数据移出表时,他们打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。