各种单点登录方案调研

一、token(key)——json数据(value)

方案实现

*注意:需要多端使用一个域名/主机

登录的处理流程:

  1. 登录页面提交用户名密码
  2. 登录成功后生成token。Token相当于原来的jsessionid,字符串,可以使用uuid
  3. 把用户信息保存到redis。Key就是token,value就是User对象转换成json
  4. 使用String类型保存Session信息。可以使用“前缀:token”为key
  5. 设置key的过期时间。模拟Session的过期时间。一般半个小时
  6. 返回token
  7. 登录成功
  8. 前端接收并存储token

安全退出

​ 根据token(key)删除redis中的数据

参考文档:https://blog.csdn.net/tanga842428/article/details/79756992

方案分析

适用于访问用户信息较多的项目,如论坛、博客

优点

​ 数据读取方便,直接取出value并转换成json对象即可

缺点

​ 需要手动配置相关拦截器、redis逻辑、复杂权限校验(rules、role)等

二、token(key)——id(value)

方案实现

*注意:需要多端使用一个域名/主机

登录的处理流程:

  1. 登录页面提交用户名密码
  2. 登录成功后生成token,Token相当于原来的jsessionid,字符串,保证唯一性可以使用uuid
  3. 把用户id和token保存到redis。**Key就是用户前缀:id,value就是token
  4. 设置key的过期时间
  5. 返回token、id
  6. 登录成功
  7. 前端接收并存储token、id

安全退出

根据前缀:id(key)删除redis中的键值对

方案分析

适用于用户信息需求较少的情况,如:订单模块、商品模块等

优点

​ 读取速度更快、占用内存更小、权限校验只需配置一个过滤器

缺点

​ 用户数据获取相对麻烦

三、shiro整合redis

方案实现

*注意:需要多端使用一个域名/主机

https://blog.csdn.net/u012954380/article/details/102244194

方案分析

适用于已经使用shiro做权限校验的扩展

适用于权限校验粒度比较细的项目,如后台管理(集群)等

优点

​ 代码成熟、粒度很细、只需要进行一些shiro的配置(manager及relam)

缺点

​ 对于不需要很细粒度的权限校验项目来说比较冗余、内存需求相对方案一二较大

四、jwt实现单点登录

*注意:需要多端使用一个域名/主机

方案实现
  1. 登录页面提交用户名密码
  2. 登录成功后生成jwt、包含id等非敏感信息
  3. 返回jwt
  4. 登录成功
  5. 前端接收并存储jwt

参考:https://www.jianshu.com/p/e88d3f8151db

方案分析

优点

​ 数据不存储在后端,不存在内存压力

缺点

​ 数据存储在前端、每次请求都需要携带jwt,请求的数据量增加

五、spring security+Oauth2+Jwt

方案实现

https://blog.csdn.net/weixin_40773253/article/details/84589785

方案分析

优点

​ server服务器(认证中心)需要单独部署,项目不用部署在同一个域名下,配置很灵活

缺点

​ 依赖相对较多,认证中心单独部署,服务器压力增大

六、解决单点登录只能同一域名问题(一到四):CAS

spring security+CAS: https://blog.csdn.net/qq_35618489/article/details/88186959

CAS专题 https://blog.csdn.net/oumuv/category_9281614.html

shiro+CAS https://www.cnblogs.com/funyoung/p/9242220.html

server服务器需要单独部署、需要秘钥,使用安全性很高、扩展灵活

七、其他

shiro与spring security比较

https://www.jianshu.com/p/0891b2279c65

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值