1 故事背景
忘记密码这件事,相信绝大多数人都遇到过,输一次错一次,错到几次以上,就不允许你继续尝试了。
但当你尝试重置密码,又发现新密码不能和原密码重复:
相信此刻心情只能用一张图形容:
虽然,但是,密码还是很重要的,顺便我有了一个问题:三次输错密码后,系统是怎么做到不让我继续尝试的?
2 我想了想,有如下几个问题需要搞定
是只有输错密码才锁定,还是账户名和密码任何一个输错就锁定?
输错之后也不是完全冻结,为啥隔了几分钟又可以重新输了?
技术栈到底麻不麻烦?
去网上搜了搜,也问了下ChatGPT,找到一套解决方案:SpringBoot+Redis+Lua脚本。
这套方案也不算新,很早就有人在用了,不过难得是自己想到的问题和解法,就记录一下吧。
顺便回答一下上面的三个问题:
锁定的是IP,不是输入的账户名或者密码,也就是说任一一个输错3次就会被锁定
Redis的Lua脚本中实现了key过期策略,当key消失时锁定自然也就消失了
技术栈同SpringBoot+Redis+Lua脚本
前端部分
首先写一个账密输入页面,使用很简单HTML加表单提交
html>
登录页面title>
热门跟贴