cookie共享:共享同一個(gè)session cookie,服務(wù)端接受到相同的session id
session共享:共享同一個(gè)session系統(tǒng),這樣來自不同二級域的統(tǒng)一session id訪問同一會(huì)話數(shù)據(jù)
需求分析web2.0時(shí)代,富web應(yīng)用層出不窮,新公司如雨后春筍般層出不窮,有的專攻一點(diǎn),有的涵蓋廣泛,各有各的方向,各有各的理念,嗯,專攻一點(diǎn)的可以狗帶了,我們這里主要講一下涵蓋廣泛型的web服務(wù)最基本的業(yè)務(wù)整合模式:單點(diǎn)登錄
例如開源中國旗下的三個(gè)業(yè)務(wù)單元,主站,個(gè)人空間,眾包
www.oschina.net my.oschina.netzb.oschina.net
在任何一個(gè)站點(diǎn)登錄后其他站點(diǎn)都是登錄狀態(tài)
php+redis實(shí)現(xiàn)接下來我們使用php + redis來實(shí)現(xiàn)sso的二級跨域模式,如何安裝redis服務(wù)器和php的redis.so擴(kuò)展這里就不說了,請自行百度
例如我們有
www.sso.com
my.sso.com
設(shè)定session的句柄為redis服務(wù)器,session的cookie的共同的域?yàn)橐患壐赣?:‘.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服務(wù)器中 $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{?>
以上兩個(gè)模塊分別實(shí)現(xiàn)了
session通過redis實(shí)現(xiàn)共享,session的cookie域的設(shè)置
判斷用戶是否登錄,redis如何保存session
的功能
將以上代碼放置到www.sso.commy.sso.com 上(用虛擬主機(jī)玩就可以)
在任意站點(diǎn)登錄后都可以實(shí)現(xiàn)另一站點(diǎn)的登錄
父域相同
redis端以String類型存儲(chǔ)某session_id的內(nèi)容
請勿轉(zhuǎn)載?。。。?/strong>