Token登录授权、续期和主动终止的方案(Redis+Token(非jwtToken))

1、Redis+Token方案的授权
1.1 基本原理

登录后使用UUID生成token,前端每次请求都会带上这个token作为授权凭证。这种方案是能自动续签,也能做到主动终止。所以很多项目用的都是Redis+Token方案,简单方便问题少。缺点就是需要依赖Redis和数据库。

1.2 基本流程:
  • 设置一个拦截器,不校验登录接口,拦截其他接口

  • 登录接口接收前端传来的用户名密码,去数据库查询该用户名是否存在,该密码是否正确

  • 如果正确则表示登录成功,调用生成Token方法,返回Token给前端

  • Token使用用户id或账号+时间戳+UUID用MD5加密的一串字符串(不建议用其他数据,因为id或账号极少变更的,变更会增加复杂性)

  • 生成后存储到Redis,把Token当作键,用户数据当作值,并设置过期时间

  • 生成Token的方法中,还得防止重复调登录接口,不停生成不同的Token,所以先判断数据库中是否存在键,所以保存token键到redis的同时要在redis中再增加一条用户ID为键Token为值的数据,可以验证该用户是否已经生成过token。

针对上述重复生成token问题,使用lua优化以下就可以了

相关推荐
MandalaO_O8 分钟前
IDEA 开发(快捷键 + 调试 + 序列化)
java·ide·intellij-idea
可乐鸡翅yeah_1 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
xiaoqiMikko1 小时前
JVM 线上排查实战(七):jps 看不见它、jstack 连不上它,可它明明活得好好的
java·jvm
石头麻辣鱼1 小时前
Bamboo 调度系统 OceanBase 适配实战:存储过程迁移踩过的三个大坑
数据库
龙亘川1 小时前
数智驱动民政升级 精准守护民生保障
大数据·数据库·人工智能
狼爷2 小时前
Rust/Go/Java/Python/PHP 大比拼:负载下后端框架到底差多少?
java·后端·编程语言
念何架构之路2 小时前
zap扩展生态与总结
java·前端·数据库
晚安日记wanna2 小时前
MySQL 回表为什么这么慢?5 种优化手段逐个拆解
数据库·mysql·性能优化
第七页独白2 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库
晚安日记wanna3 小时前
索引建了却不走?7 个失效原因逐层排查
数据库·mysql·性能优化