实现多个不同域名网站之间的单点登录解决方案

实现多个不同域名网站之间的单点登录解决方案

实现多个不同域名网站之间的单点登录解决方案

单点登录的原理其实很简单

现在的需求是这样的,用户在站点A登录成功后,再打开站点B或C都是已登录状态,无需再次登录,我们假ABC这三个站点的用户表是一致的,也就是说这三个站点中的用户唯一UID是一致的

这种情况实现的方法有两种

1、用户UID放在COOKIE中,并加入签名值,防止客户端篡改,用户在A站登录的时候将用户UID写入其他BC站点的COOKIE中,用户打开其他BC站点的时候,校验COOKIE中uid及签名,无误后进行自动登录,这样就实现了单点登录

2、用户登录A站点后,A站点就token及用户UID写入redis缓存中,设置有效期,并将token传到其他站点的COOKIE中,其他站点根据token去redis取出用户id值,实现自动登录

实现多个不同域名网站之间的单点登录解决方案

那么如果A B C三个站点的用户表是独立的,那么又该怎么实现单点登录呢

其实我们再建一个站点叫D,D中有一个用户表,用户id叫UINIONUID,这个站点的用户数据来自ABC站点的用户数据,用户在A登录的时候,验证密码后,如果这个用户没有UNIONUID,就会去D站点生成一个UNIONUID,然后生成一个ticket凭证存放在redis中,通过js让BC网站COOKIE存储这个凭证,用户打开BC的时候就实现了会检测自己用户数据库中有没有用户绑定了UNIONUID,没有就提醒用户注册登录绑定,有的话就直接登录了,类似于qq的多站点登录接入

实现多个不同域名网站之间的单点登录解决方案

{{collectdata}}

网友评论0