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优化以下就可以了

相关推荐
Z...........17 小时前
MYSQL进阶查询
数据库·mysql
今天_也很困17 小时前
LeetCode热题100-560. 和为 K 的子数组
java·算法·leetcode
在繁华处18 小时前
线程进阶: 无人机自动防空平台开发教程V2
java·无人机
A懿轩A18 小时前
【Java 基础编程】Java 变量与八大基本数据类型详解:从声明到类型转换,零基础也能看懂
java·开发语言·python
m0_7400437318 小时前
【无标题】
java·spring boot·spring·spring cloud·微服务
Tansmjs18 小时前
使用Python自动收发邮件
jvm·数据库·python
m0_5613596718 小时前
用Python监控系统日志并发送警报
jvm·数据库·python
@ chen18 小时前
Spring事务 核心知识
java·后端·spring
Dxy123931021618 小时前
MySQL INSERT ... ON DUPLICATE KEY UPDATE 与非主键唯一字段
数据库·mysql
aithinker18 小时前
使用QQ邮箱收发邮件遇到的坑 有些WIFI不支持ipv6
java