前言:cookie和session是web開(kāi)發(fā)中非常重要的會(huì)話(huà)跟蹤技術(shù)。
主題:前一段時(shí)間,因?yàn)樵陂_(kāi)發(fā)中使用到公司的統(tǒng)一登錄平臺(tái)passport,所以就自己找了很多資料,詳細(xì)的學(xué)習(xí)了一下它們的原理以及實(shí)現(xiàn)過(guò)程,這里就著重分享一下“跨域共享cookie和跨域共享session”。
場(chǎng)景:公司所有登陸都走的是統(tǒng)一一套pass環(huán)境,passport使用的就是COOKIE和SESSION技術(shù),來(lái)作為跟蹤保存用戶(hù)信登陸息的。這里有一個(gè)問(wèn)題,比方說(shuō),公司的pass種cookie的時(shí)候,使用的是".a.com"域,但是由于公司收購(gòu)或者成立了新的部門(mén)業(yè)務(wù)線(擁有獨(dú)立新的域名,例如.b.com),那么這種情況下,如果想使用同一套登陸環(huán)境,由于存在跨域,就無(wú)法實(shí)現(xiàn)。如下圖1-1所示,passport種cookie在父域名".a.com"下,所有其他的子域名“m.a.com”,"n.a.com"都可以使用;但是,對(duì)于“.b.com”就無(wú)法共享passport。
圖1-1
解決方法:如圖1-2所示,登陸走的依舊是統(tǒng)一passport,不區(qū)分業(yè)務(wù)線(即使域名不同),但passport在接受到登陸請(qǐng)求之后,就會(huì)發(fā)出"http://user.b.com/crossdomain.PHP?c=asdfgsaghqwqeefdvvgnnn"數(shù)據(jù),user模塊接受到passport發(fā)來(lái)的數(shù)據(jù),即其中的c參數(shù)所攜帶的數(shù)據(jù)(其實(shí)這個(gè)c參數(shù)就是一個(gè)cookie標(biāo)示,不過(guò)是做了一定的加密),然后解密,再以setcookie的方式種到自己的當(dāng)前域下(.b.com),這樣在".b.com"下也就可以正常的使用passport登陸了。
圖1-2
總結(jié):也就是說(shuō)user模塊是一個(gè)橋梁,連接了passport(.a.com)和新業(yè)務(wù)(.b.com),把用戶(hù)的登陸信息通過(guò)user做個(gè)代理轉(zhuǎn)化,然后種植到新的域名下,從而達(dá)到統(tǒng)一登錄的目的。
聯(lián)系客服