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

相关推荐
是小蟹呀^几秒前
Java中的继承:从入门到精通
java·继承
bearpping3 分钟前
怎么下载安装yarn
java
西门吹雪分身16 分钟前
JDK8之四大核心函数式接口
java·函数式接口
秦jh_17 分钟前
【Redis】Set和Zset
数据库·redis·缓存
what_201824 分钟前
PostgreSQL 时间
数据库·postgresql
华科易迅26 分钟前
Spring AOP
java·后端·spring
架构师沉默29 分钟前
Gemini 正式登陆香港,不用翻墙!
java·后端·架构
Nyarlathotep011336 分钟前
Redis的数据结构(4):跳表
数据库·redis
☆56642 分钟前
如何为开源Python项目做贡献?
jvm·数据库·python