OAUTH.令牌存储介绍以及JWT实现强制登出、登录个数控制
1、令牌存储介绍TokenStore的实现类 , 有InMemoryTokenStore、JdbcTokenStore、JwkTokenStore、RedisTokenStore 。
1.1 基于内存的 InMemoryTokenStore
- 优点:单机、简单易用
- 缺点:a) 重启服务器导致令牌全部丢失 , 用户需要重新授权 。b) 微服务、分布式系统中无法共享令牌信息 。
- 优点:简单
- 缺点:数据库有限制性 , 一旦数据量过大 , 那么CRUD等操作执行速率就会下降
- 优点: 使用缓存存储用户的认证信息 , 可以撤销用户 , 强制登录下线
- 缺点:-
- 优点:无需保存用户认证信息
- 缺点:无法撤销用户的授权 , 只能等token过期
文章插图
TokenGranter根据grant_type的不同 , 调用不同的认证方式 , 获取用户信息 , 最后调用TokenService生成令牌 。
文章插图
生成令牌后 , 会调用storeAccessToken接口存储token信息 , 对于JwtTokenStore实现类来说 , 该接口没有做任何事情 , 因此我们可以考虑重写该方法逻辑 , 将token信息存入缓存中 。
2.1 登录提出、个数控制思路如下:
- 生成Jwt的时候 , 将Jwt Token存入redis中 , 采用list数据结构(为了控制登录个数及顺序 , key过期时间取item中最大值
- 扩展Jwt的验证功能 , 验证redis中是否存在数据 , 如果存在则token有效 , 否则无效 , 并判断登录个数 , 若超出登录个数则按顺序移除相应的token
- 重写removeAccessToken接口 , 在该方法内删除redis对应的key 流程图如下:
文章插图
网关校
文章插图
验流程图:
注:为了平滑上线 , 校验策略先置为false , 即不校验token , 并将token存入redis中 , 等上线一段时间 , 线上大多数用户的token都记录在缓存中后 , 再开启token有效期校验 。 作者:是趴趴熊呀链接:来源:掘金著作权归作者所有 。 商业转载请联系作者获得授权 , 非商业转载请注明出处 。
- 2020年NAS首选,超高速读写备份,联想个人云存储A1体验
- 杉岩MOS存储荣获国家电子计算机质量监督检验中心证书
- 极速鲨课堂76 选购存储产品 如何避免成为冤大头?
- 手机存储已满,老是提示空间不足,想删除又不知道删哪里?
- 原汁原味,还是那个东芝存储,铠侠高端USH-II 存储卡评测
- HFL Redis_11_zset类型底层存储数据结构
- 新型数据存储方法能耗缩减100多倍 或将应用于自动驾驶领域
- 微信是怎么样吃掉存储空间的?为什么没有云备份?
- 「爬虫四步走」手把手教你使用Python抓取并存储网页数据
- 长江存储官方科普SSD、3D闪存:堆叠500层不是没可能