2021-3-30
在Nginx负载均衡多Tomcat环境中,无法使用Session来存储验证码了,因为每个Tomcat都有自己的Session,每次的请求可能会请求到不同Tomcat,其他Tomcat的Session是没有你在其他Tomcat存储的数据的,如果有说明你运气爆炸,请求到了相同的Tomcat。
作者音神,使用Redis+Cookie的方式解决的这个问题。
项目框架使用的SpringMVC+Spring+MyBatis。
Redis实现存储验证码
- 创建全局过滤器,使用UUID给用户分配唯一标记,放入用户Cookie中。
- 在页面点击发送验证码。后台生成验证码,并获取用户Cookie中的唯一标记,最后将验证码放入Redis中,Cookie的唯一标记作为Reids的key值,验证码作为Reids的value值,进行保存。
- 点击保存按钮,检测验证码是否正确。后台获取用户输入验证码,并通过用户Cookie的唯一标记获取Redis中的验证码,进行对比,对比通过进行删除Redis中的验证码,不通过进行提示。
后续后加上源码链接,目前还未开发~~