首页 > 数据库 >基于redis实现验证码、Token的存储

基于redis实现验证码、Token的存储

时间:2024-10-14 15:22:24浏览次数:9  
标签:存储 拦截器 redis 验证码 信息 用户 Token token

多台tomcat服务器之间 session信息不能共享 (早期tomcat为解决这个问题 可以在tomcat服务器之间拷贝session信息 但拷贝时有时间延迟 故淘汰)

1.使用redis替代session

1.使用String数据类型存储验证码  每一个手机号作为key

2.使用Hash数据结构存储用户信息   随机token作为key value用户信息

3.存储到redis后 将保存用户信息的key(生成的随机token)返回给前端 当前端每次访问后端 携带token 查找redis 

4.前端是如何做到每次都携带token访问服务器?

后端返回给前端的token 会存储到前端的sessionStorage(是浏览器的一种存储方式)

首先从sessionStorage中得到token

当每次发起请求时 将token放入请求头中 请求头名字为authorization

所以不能使用手机号作为key存储 用户信息 因为要返回给前端 存储到前端服务器 会产生信息泄露的风险

1.发送验证码 保存到redis中

2.短信验证码登录、校验

使用UUID生成随机token作为key 存储redis时 使用putAll 一次性将信息全部存入  但需要将user对象转为HashMap类型 设置用户信息的有效期为30分钟 只要不断的访问redis 则刷新redis有效期  只有当用户超过30分钟不访问 再删除用户信息

更新拦截器方法 在拦截器中刷新token有效期 (只要此token不断被访问 则刷新有效期)

3.登录拦截器的优化

此拦截器只是拦截需要做登录校验的请求 如果用户一直访问不需要登录校验的页面 那么此拦截器是不会生效的 也就不会刷新token有效期 需要在此拦截器之前 新增一个拦截器 用于拦截所有请求 确保用户一切请求 都会刷新token有效期

新拦截器的preHandle前置拦截器    只做刷新token 和保存用户信息到ThreadLocal的作用

旧拦截器 只需要判断ThreadLocal中是否有用户信息

添加配置 拦截器  将token拦截器 优先级设为0 先执行拦截所有请求的拦截器

标签:存储,拦截器,redis,验证码,信息,用户,Token,token
From: https://blog.csdn.net/m0_74134882/article/details/142905458

相关文章

  • redis未授权访问及利用总结
    Redis未授权访问漏洞漏洞原理redis默认端口6379,在默认配置情况下密码为空,因此如果将redis暴露到公网,会导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据,并且可以利用redis写入shell、写入公钥等危险操作漏洞复现安装redis下载安装包后进行解......
  • Redis缓存更新策略
    缓存更新策略内存淘汰超时剔除主动更新说明利用Redi的内存淘汰机制,当内存不足时自动淘汰部分数据,下次查询时更新缓存给缓存数据添加TTL(即缓存存在时间)的时间,到期后自动删除缓存,下次查询时更新缓存在修改数据库的同时,更新缓存一致性差一般好维护成本无低高业务使用场景:低一致......
  • redis缓存穿透、雪崩、击穿
    缓存穿透缓存穿透:客户端请求的数据在缓存和数据库都不存在。这样缓存永远不会生效,这些请求都会打到数据库中。解决方案缓存空对象(常用)优点:实现简单,维护方便缺点:额外的内存消耗;可能造成短期的不一致(可以设置TTL时间,缓解不一致的情况)布隆过滤器(常用)优点:内存占用少,没用多......
  • Redis 缓存预热,缓存雪崩,缓存击穿,缓存穿透
    Spring-data-redis说明:在SpringBoot2.x之后,原来使用的jedis被替换为了lettucejedis:采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用jedispool连接池lettuce:采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据了1......
  • 滚雪球学Redis[3.3讲]:Redis数据持久化深入探讨:从 AOF 到混合持久化的演进
    全文目录:前言混合持久化1.RDB与AOF之间的权衡2.混合持久化的工作原理工作机制详解3.配置与实践实例演示4.实际应用中的案例分析5.深入探讨混合持久化的优势与局限6.扩展思考:如何选择Redis的持久化策略?总结附:案例与代码配置文件示例:测试代码:模拟数据恢复:下......
  • Redis 必知概念
    Redis为什么快基于内存实现:Redis将数据存储在内存中,读写操作不会受到磁盘IO速度限制;CPU不是Redis的瓶颈,Redis的瓶颈在于机器内存的大小或者网络带宽I/O多路复用模型的使用:Redis线程不会阻塞在某一个特定的客户端请求处理上;可以同时和多个客户端连接并处理请求,从......
  • SpringBoot利用redission实现延迟队列
    1.引入依赖<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.23.3</version></dependency>2、注入redissonClient@AutowiredprivateRedissonClientredissonClient;......
  • 利用Redis的BitMap统计每月用户连续签到
    利用Redis的BitMap统计每月用户连续签到我们按月来统计用户签到信息,签到记录为1,未签到则记录为0.把每一个bit位对应当月的每一天,形成了映射关系。用0和1标示业务状态,这种思路就称为位图(BitMap)。这样我们就用极小的空间,来实现了大量数据的表示Redis中是利用string类型数据......
  • Redisson分布式锁
    目录一、SETNX+EXPIRERedis分布式锁误删问题业务阻塞造成锁超时释放问题二、SETNX+LUA脚本Lua脚本解决多条命令原子性问题利用Java代码调用Lua脚本改造分布式锁 锁无法续期问题三、Redisson分布式锁 背景和定义使用方式Redisson的大致流程Redisson的可重入原理......
  • Redis教程
    (原创)Redis教程......