场景:在多个站点中,比如a.test.com、b.test.com、c.test.com三个站点中,三个站点又是位于不同的服务器中,想实现类似session共存,在a.test.com登录成功后,访问b和c站点,不再需要登录,这时应该怎么做呢?
思考
如果运用平时使用的session来实现,肯定无法实现此操作,平时用的session都是在同一服务器中,单独一个站点中进行使用的。
解决
我们可以换一个思路来实现,使用cookie进行使用,如下示例(这里采用php代码进行演示)
一、代码结构
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.com和www.sso.com来进行测试,分别位于本地服务器和192.168.92.132服务器中
三、测试
先访问 http://task.sso.com/test.php 然后访问http://task.sso.com/user.php,
分别如下两图展示
这时我们再访问http://www.sso.com/user.php
如下显示
关闭浏览器测试
当关闭浏览器后,再分别访问
http://task.sso.com/user.php 和 http://www.sso.com/user.php,,发现已清除成功,无数据了,测试成功
总结
使用这种方式,我们可以实现用户单点登录,然后在多个应用中使用同一用户数据