重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

跨二级域单点登录解决方案[php+redis]

cookie共享 + session共享

cookie共享:共享同一个session cookie,服务端接受到相同的session id

创新互联是一家集网站建设,红塔企业网站建设,红塔品牌网站建设,网站定制,红塔网站建设报价,网络营销,网络优化,红塔网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

session共享:共享同一个session系统,这样来自不同二级域的统一session id访问同一会话数据

需求分析

web2.0时代,富web应用层出不穷,新公司如雨后春笋般层出不穷,有的专攻一点,有的涵盖广泛,各有各的方向,各有各的理念,嗯,专攻一点的可以狗带了,我们这里主要讲一下涵盖广泛型的web服务最基本的业务整合模式:单点登录

例如开源中国旗下的三个业务单元,主站,个人空间,众包

www.oschina.net my.oschina.netzb.oschina.net

在任何一个站点登录后其他站点都是登录状态

php+redis实现

接下来我们使用php + redis来实现sso的二级跨域模式,如何安装redis服务器和php的redis.so扩展这里就不说了,请自行百度

例如我们有

www.sso.com

my.sso.com

设定session的句柄为redis服务器,session的cookie的共同的域为一级父域 :‘.sso.com’

逻辑模块,例如:

if(isset($_SESSION[\'user\'])){ echo"welcome!".$_SESSION[\'user\'].\'
\'; //这里讲明下redis是如何存放session的 $redis=newRedis(); $redis->connect(\'your.redisserver.domian\',6379); //PHPREDIS_SESSION:session_id()的组合键为键名,以string类型存放在redis服务器中 $session=$redis->get(\'PHPREDIS_SESSION:\'.session_id()); var_dump($session); }else{ if(isset($_POST[\'submit\'])){ $_SESSION[\'user]=$_POST[\'user]; $_SESSION[\'password\']=$_POST[\'password\']; header("location:/"); }else{?> sso_redis

"method="post">

以上两个模块分别实现了

session通过redis实现共享,session的cookie域的设置

判断用户是否登录,redis如何保存session

的功能

将以上代码放置到www.sso.commy.sso.com 上(用虚拟主机玩就可以)

在任意站点登录后都可以实现另一站点的登录

父域相同

redis端以String类型存储某session_id的内容

请勿转载!!!!

本文标题:跨二级域单点登录解决方案[php+redis]
本文地址:http://cqcxhl.com/article/cjisos.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP