一种跨域单点登录的解决办法

现有多个应用,要求这几个应用统一通过一个网站(假设该网站的域名是login.com)登陆,若一个浏览器上成功登陆后,在同个浏览器下打开其他应用无需再次登陆,也就是一个浏览器只需登陆一次。

首先想到的是用cookie实现单点登陆:登陆成功后,login.com的服务器生成一个唯一的id并保存到一个表中,并向浏览器cookie中写入该id,当其他应用接收到请求时,先检查有无该id,若有则与login.com的登陆表中对照进行验证,若无则重定向到登陆网站。

但这种方式有一个跨域的问题。如果统一登陆的几个应用在和login.com在同一域名下,则可以获取cookie,如果分别在不同域名下,则无法获取到login.com的cookie.这样其他应用无法获取到login.com的cookie,其他应用的后台也就无法判断浏览器的登陆状态。

解决办法:login.com的登陆采用ajax方式无刷新登陆,在login.com登陆成功后,向浏览器发回相应,写入登陆id,然后浏览器再次向其他每一个应用的登陆action发送请求,请求参数就是该id。其他应用的action收到该请求后,先在login.com的表中验证,若验证成功则在session中保存该id,这样所有其他应用对应同个浏览器的session中都保存了login.com在该浏览器中写入的id,实现了cookie的共享。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值