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

相关推荐
m0_613856294 小时前
mysql如何利用事务隔离级别解决特定业务冲突_mysql隔离方案选型
jvm·数据库·python
Adios7944 小时前
VPR:Pitts50K和Norland数据集下载
数据库
东风破1374 小时前
DM用户权限、表、约束等对象的基本操作,SQL日志的开启介绍
数据库·sql·dm达梦数据库
abcnull4 小时前
用javaparser做精准测试
java·ast·静态代码分析·精准测试·javaparser
叶小鸡4 小时前
Java 篇-项目实战-苍穹外卖-笔记汇总
java·开发语言·笔记
收获不止数据库4 小时前
达梦9发布会归来:AI 时代,我们需要一款什么样的数据库?
数据库·人工智能·ai·语言模型·数据分析
AI人工智能+电脑小能手4 小时前
【大白话说Java面试题】【Java基础篇】第22题:HashMap 和 HashSet 有哪些区别
java·开发语言·哈希算法·散列表·hash
小宇的天下4 小时前
Virtuoso GUI 界面中的关键模块定义
数据库
bqq198610264 小时前
MySQL 5.7 与 MySQL 8.0 的主要区别
数据库·mysql
juniperhan4 小时前
Flink 系列第21篇:Flink SQL 函数与 UDF 全解读:类型推导、开发要点与 Module 扩展
java·大数据·数据仓库·分布式·sql·flink