SSO单点登录设计实现

场景:在多个站点中,比如a.test.com、b.test.com、c.test.com三个站点中,三个站点又是位于不同的服务器中,想实现类似session共存,在a.test.com登录成功后,访问b和c站点,不再需要登录,这时应该怎么做呢?

思考

如果运用平时使用的session来实现,肯定无法实现此操作,平时用的session都是在同一服务器中,单独一个站点中进行使用的。

解决

我们可以换一个思路来实现,使用cookie进行使用,如下示例(这里采用php代码进行演示)

一、代码结构
image.png

test.php

<?php

setcookie('name','cat',0,'/','sso.com');
setcookie('age','28',0,'/','sso.com');
echo "设置成功";

task/user.php

<?php
echo "<pre>";
print_r($_COOKIE);die;

www/user.php

<?php

echo 22;
echo "<pre>";print_r($_COOKIE);
die;
二、设置域名和host文件

域名使用task.sso.comwww.sso.com来进行测试,分别位于本地服务器和192.168.92.132服务器中

image.png

三、测试

先访问 http://task.sso.com/test.php 然后访问http://task.sso.com/user.php
分别如下两图展示

image.png

image.png

这时我们再访问http://www.sso.com/user.php
如下显示

image.png

关闭浏览器测试

当关闭浏览器后,再分别访问

http://task.sso.com/user.phphttp://www.sso.com/user.php,,发现已清除成功,无数据了,测试成功

image.png

image.png

总结

使用这种方式,我们可以实现用户单点登录,然后在多个应用中使用同一用户数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。