Vue项目中完全跨域的单点登录实现

前言

前段时间公司要求把几个内部系统做成单点登录,不知道单点登录是什么的点击这里,我们的各个系统是部署在不同域名底下的,所以这个需求的本质就变成了如何跨域共享token

尝试过程

1.首先跨域共享token,同域名下使用cookie的domain配置,这个方式肯定是行不通了。
2.在A系统中跳转B系统的时候,在url上带上token信息,这种方式也不行,首先在url上带token不太安全,其次就是不能保证用户是在A系统中跳转B系统,用户可能在A系统中登录之后,直接打开B系统,所以这种方式也被放弃。
3.我想到了天猫淘宝的单点登录,我翻了天猫淘宝登录页面无数个XHR请求之后,终于发现了其实现原理,天猫在登录页面通过iframe内嵌了一个淘宝登录页。在天猫登录页登录,实际上还是走的淘宝中的登录接口,并且登录成功之后cookie也是设置在淘宝的域名底下,在淘宝iframe中登录成功之后,通过postMessage进行iframe父子窗口通讯,天猫登录页得知用户在淘宝中已经登录成功,就通过get的请求,去请求淘宝的认证接口,此时会带上淘宝域名底下的cookie中的token,认证接口校验token有效性,并且返回token,此时在天猫登录页就拿到淘宝域名下的token,实现了token共享,为了方便理解,我画了一张图。

在这里插入图片描述

Demo地址

https://gitee.com/GaoWeiQiang1996/vue-sso-demo

具体的使用说明请查看码云上的readme.md文件

  • 9
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值