关于多设备SSO单点登录的思考与实现

文章讨论了多系统单点登录的问题及解决方案。通过User-Agent识别系统,利用token和redis管理登录状态,确保单点登录。拦截器用于鉴权,检查设备登录状态和过期时间。退出登录时清除相关设备信息。
摘要由CSDN通过智能技术生成

多系统单点登录存在的问题:

1)怎么区分系统?

可以通过request中User-Agent获取设备信息,判断是否存在系统关键词区分系统;移动端也可以在请求头中添加指定字段确认是什么系统。

2)怎么保证单点?

需要保存已登录的系统的信息和登录时间才能知道当前系统是否已有设备登录

3)怎么形成互斥?

在新设备登录时需要能够获取到就设备的信息,把旧设备信息删除或替换,所有token不可变。

初步方案:

  1. token生成:根据用户使用网站过程中不会改变的信息去生成用户唯一token,用作redis中的key,用户登录时获取登录设备,将登录设备和登录时间用作value保存到redis中。

  1. 鉴权:使用拦截器拦截请求,判断有无token。有token则根据token查询redis中所对应的value;获取当前操作设备,判断设备是否已登录(是否在value中),如果存在,判断是否已过期,若没有过期则鉴权通过。

  1. token过期:在保存token时将设备的过期时间一起保存,请求时判断设备登录是否已过期,若没有过期则请求成功,同时更新设备过期时间和redis中token过期时间。

  1. 退出登录:判断退出的设备是否存在登录状态,存在则删除设备,设备退出后如果已经没有设备登录,则在redis中删除token。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xcdm100

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值