我正在处理ASP.NET 2.0中的应用程序,并且我给出了一个任务,即密码不应与过去三个月的c#.net匹配。 前三个月密码字段将为空我将在前三个月存储它们,但从第四个月开始,我必须如何将密码与所有字段进行比较后再次将密码存储在第一个字段中。告诉我一些解决方案我的想法是完全被困住了。比较密码与最近三个月的密码
-1
A
回答
2
我想说这样做的最好方法是有一个单独的表,包括userID,密码散列和时间戳。当密码更改时,您将插入此处,时间戳将在插入时为当前时间。
SELECT count(*) FROM oldpasswords where userid = :p_userid and
password = :p_pass and timestamp < DATE_SUB(NOW(), INTERVAL 3 MONTH);
如果计数> 0,他们已经在过去3个月内使用过它:
CREATE TABLE `oldpasswords` (
`userid` int(11) NOT NULL,
`password` varchar(255) NOT NULL default '0',
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`userid`,`password`, `timestamp`)
);
然后,当用户试图更改其密码就可以查询该表。如果不是,则将其插入此表并更改主用户表记录。
您可能还想定期清理此表。
DELETE FROM oldpasswords WHERE timestamp < DATE_SUB(NOW(), INTERVAL 3 MONTH);
会删除超过3个月的任何东西,因为我们不再需要它了。
0
你基本上是在查看一张存储“退休”密码的表格,该表格与其所属的用户帐户以及更改时间相关联。当他们去改变工作流程进行:
- 检查是否有新的密码是一样的当前密码
- 检查新的密码是“旧密码”数据库(与该用户相关)和时间之内范围
如果这两个都是假,移动到的变化:
- 添加当前密码作为新条目“老密码“数据库(带时间戳)
- 将用户密码更改为新密码并将其保存回其配置文件
- (可选)修剪”旧密码“数据库以查找比我们所关心的项目更旧的数据。
至少我是这样解决它的。
相关问题
- 1. 如何比较Microsoft Access密码与用户提供的密码?
- 2. CakePHP的3 - 比较密码
- 3. 比较由bcrypt加密的密码
- 4. 手动转换密码和盐以与ASPNETDB密码比较
- 5. Python输入密码并与暗号密码数据库比较
- 6. 无法比较/解密密码(PHP/Android)
- 7. 比较散列密码
- 8. Javascript密码字段比较
- 9. PHP和MySQL比较密码
- 10. 比较散列密码
- 11. 比较密码与随机盐
- 12. 如何将字符串密码与laravel进行比较加密密码
- 13. 代码比较登录名和密码
- 14. php比较两个密码字符串
- 15. 比较两个密码哈希值 - nodejs
- 16. 用户密码验证与他最近在Drupal6中的密码历史记录
- 17. 如何比较密码并确认密码?
- 18. 如何使用bcrypt将纯文本密码与哈希密码进行比较?
- 19. 比较不工作的密码Java
- 20. 用于比较密码的sfValidator sha1
- 21. SQL最近三个月
- 22. s3cmd与OpenPGP加密密钥 - 这是一个密码或密码?
- 23. 如何比较使用.equals()方法的两个密码(创建密码和确认密码)?
- 24. 比较密码字段IoS Swift
- 25. Symfony sfForm密码(必需和比较)
- 26. 比较哈希输入Excel密码
- 27. 密码比较返回错误
- 28. 如何比较DotNetNuke加密的外部密码?
- 29. 如何正确比较加密的密码字符串?
- 30. 比较Liferay的加密密码和用户输入