成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

yii2中session跨域名的問(wèn)題

rollback / 2228人閱讀

摘要:可是,我們的域名有這三個(gè)域名僅僅是不同的環(huán)境,因此,的跨域名訪問(wèn)就引出來(lái)了。無(wú)論是一二級(jí)域名,和不同域名下的跨域,無(wú)非要達(dá)到兩點(diǎn)客戶端訪問(wèn)同一個(gè)所有域名對(duì)應(yīng)的服務(wù)器訪問(wèn)的的數(shù)據(jù)的位置必須一致。

關(guān)閉httponly引起的問(wèn)題

場(chǎng)景1

測(cè)試A:咦,為什么test環(huán)境登錄不了呢?

程序員:清緩存。

測(cè)試B:握草,dev也登錄不了。。。誰(shuí)看看!

程序員:清緩存。

測(cè)試們:。。。唉

場(chǎng)景2

程序員A:我靠,TNND,真的登錄不了,怎么回事?

程序員B:可能還是要請(qǐng)緩存。

程序員A:沒(méi)用。

程序員B:我看看吧。

一陣搗鼓后,呀,cookie中怎么會(huì)有兩個(gè)sessionID呢?

這件事情的起因是這樣的,前端工程師需要拿取后臺(tái)管理員的cookie,用牛叉的控制臺(tái)就可以看到:document.cookie,結(jié)果沒(méi)有取到,再看看cookie管理器,顯示是httponly為true,即開(kāi)啟了path=/;httponly,這個(gè)是yii2防止XSS攻擊所設(shè)置的。

但是,前端工程師需要這個(gè)cookie信息,所以配置中開(kāi)啟了session的cookieParams參數(shù)。

"session" => [
    "class" => "yii
edisSession",
    "redis" => "redis3",
    "name" => "SID",
    "useCookies" => true,
    "cookieParams" => [
        "domain" => ".xxx.com",
        "httpOnly" => false,
    ],
],

這樣就可以獲取到cookie中保存的sessionID了,感覺(jué)沒(méi)有任何問(wèn)題。

可是,我們的域名有:admin-test.xxx.com,admin-dev.xxx.com,admin.xxx.com,這三個(gè)域名僅僅是不同的環(huán)境,因此,yii2的跨域名訪問(wèn)就引出來(lái)了。

那么上面問(wèn)題如何解決呢?很簡(jiǎn)單,domain這個(gè)參數(shù)默認(rèn)是當(dāng)前的域名,如果只允許當(dāng)前域名登錄訪問(wèn),使用默認(rèn)即可。

"session" => [
    "class" => "yii
edisSession",
    "redis" => "redis3",
    "name" => "SID",
    "useCookies" => true,
    "cookieParams" => [
        "httpOnly" => false,
    ],
],

看到網(wǎng)上大致有很多這樣的做法:

"user" => [
    "class" => "ackendextensionsAdmin",
    "identityClass" => "ackendmodelsAdmin",
    "enableAutoLogin" => false,
    "enableSession" => true,
    "loginUrl" => ["admin/login"],
    "identityCookie" => ["httpOnly" => false, "domain" => ".xxx.com"],
],

也就是把用戶的cookie中的httphttponly關(guān)閉,并且指定具體的域名,最燃這樣做了,但還是不能關(guān)閉客戶端的cookie的httponly,依然獲取不到cookie的值,建議這里的httponly一定為true。

附加:處理session跨域幾種的方案

前面談過(guò)session相關(guān)配置,在開(kāi)發(fā)的時(shí)候,常需要跨域共用session的是登錄模塊,我相信很多開(kāi)發(fā)的朋友的都遇到過(guò),只需要一個(gè)地方登錄,相關(guān)聯(lián)的網(wǎng)站也是處于登錄狀態(tài)。兩種情況:一種9streets.cn和a.9streets.cn之間,另一種是a.com b.com之間,這幾天總結(jié)了一下處理方法。

無(wú)論是一二級(jí)域名,和不同域名下的跨域,無(wú)非要達(dá)到兩點(diǎn):

客戶端訪問(wèn)同一個(gè)sessionId,所有域名對(duì)應(yīng)的服務(wù)器訪問(wèn)的session的數(shù)據(jù)的位置必須一致。

1.訪問(wèn)共同的sessionId主要是通過(guò)把當(dāng)前的sessionId寫(xiě)進(jìn)cookie里面cookie在不同域名下是不能訪問(wèn)的,我們需要在訪問(wèn)在后臺(tái)設(shè)置用戶在登錄的時(shí)候,把需要共用的登錄信息的域名,如果是在1,2級(jí)域名下,直接把cookie設(shè)置為所屬主域名,例如:

setcookie("session_id",session_id(),time()+3600*24*365*10,"/",".a.com"); 

也許你會(huì)問(wèn):如果是在不同的域名呢?采用P3P技術(shù)簡(jiǎn)單解決,實(shí)現(xiàn)原理,在訪問(wèn)網(wǎng)站x.com的時(shí)候,y.com程序觸發(fā)y.com文件的寫(xiě)入sessionid值,sessionid值便可以獲取,然后把seesion值存入數(shù)據(jù)庫(kù),取相同的sessionid值便可。這就要求y.com里面的程序文件必需能跨域訪問(wèn),默認(rèn)情況下,瀏覽器是不能跨域設(shè)置cookie的,加上p3p頭后才行。在對(duì)應(yīng)php文件加上:header("P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"");。

2.session數(shù)據(jù)存儲(chǔ)位置一致的實(shí)現(xiàn)方法

session該數(shù)據(jù)默認(rèn)情況下是存放在服務(wù)器的tmp文件下的,是以文件形式存在,而非存儲(chǔ)在服務(wù)器的內(nèi)存中,在這里我們得修改為所有域下都能訪問(wèn)的方式。網(wǎng)上介紹了數(shù)據(jù)庫(kù)存儲(chǔ),文件形式存儲(chǔ),內(nèi)存存儲(chǔ), 如果用數(shù)據(jù)庫(kù)存儲(chǔ)session數(shù)據(jù),網(wǎng)站的訪問(wèn)量很大的話,SESSION 的讀寫(xiě)會(huì)頻繁地對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,效率就會(huì)明顯降低,可以考慮存在內(nèi)存服務(wù)器來(lái)實(shí)現(xiàn),下面的session.rar里面介紹的是數(shù)據(jù)庫(kù)存session的實(shí)例。

yii2中如何實(shí)現(xiàn)呢?

main.php中應(yīng)該這般配置(同一套環(huán)境不會(huì)出現(xiàn)前面所說(shuō)的問(wèn)題,但是不同環(huán)境還會(huì)出現(xiàn)):

"user" => [
    "class" => "ackendextensionsAdmin",
    "identityClass" => "ackendmodelsAdmin",
    "enableAutoLogin" => false,
    "enableSession" => true,
    "loginUrl" => ["admin/login"],
    "identityCookie" => ["name" => "_identity", "httpOnly" => true, "domain" => ".xxx.com"],
],
"session" => [
    "class" => "yii
edisSession",
    "redis" => "redis3",
    "name" => "SID",
    "useCookies" => true,
    "cookieParams" => [
        "httpOnly" => false,
        "domain" => ".xxx.com", "lifetime" => 0
    ],
],

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30550.html

相關(guān)文章

  • 關(guān)于Yii2如何實(shí)現(xiàn)SSO登錄解析

    摘要:例如,淘寶登錄的,登錄成功的。所以思考如何實(shí)現(xiàn)這種跨域的登錄就顯得尤為重要了。需求分析進(jìn)入登錄頁(yè)面的地址登錄成功后跳轉(zhuǎn)的地址下面我主要是以框架為例解說(shuō)一下我是怎么實(shí)現(xiàn)這種跨越的登錄的。 序言 近年來(lái)網(wǎng)絡(luò)發(fā)展很快,參與網(wǎng)購(gòu)的人越來(lái)越多,但是大家在網(wǎng)購(gòu)的時(shí)候不知到有沒(méi)有注意到無(wú)論是淘寶還是京東,他們用的都是二級(jí)域名,登錄一個(gè)URL,登錄成功后又是一個(gè)URL,作為一個(gè)開(kāi)發(fā)者反正我是注意到了。...

    DirtyMind 評(píng)論0 收藏0
  • 關(guān)于Yii2如何實(shí)現(xiàn)SSO登錄解析

    摘要:例如,淘寶登錄的,登錄成功的。所以思考如何實(shí)現(xiàn)這種跨域的登錄就顯得尤為重要了。需求分析進(jìn)入登錄頁(yè)面的地址登錄成功后跳轉(zhuǎn)的地址下面我主要是以框架為例解說(shuō)一下我是怎么實(shí)現(xiàn)這種跨越的登錄的。 序言 近年來(lái)網(wǎng)絡(luò)發(fā)展很快,參與網(wǎng)購(gòu)的人越來(lái)越多,但是大家在網(wǎng)購(gòu)的時(shí)候不知到有沒(méi)有注意到無(wú)論是淘寶還是京東,他們用的都是二級(jí)域名,登錄一個(gè)URL,登錄成功后又是一個(gè)URL,作為一個(gè)開(kāi)發(fā)者反正我是注意到了。...

    Anchorer 評(píng)論0 收藏0
  • web登錄分析(簡(jiǎn)單登錄與單點(diǎn)登錄)

    摘要:系統(tǒng)從認(rèn)證中心得到校驗(yàn)成功的結(jié)果后,則可以認(rèn)為用戶已登錄。認(rèn)證中心發(fā)現(xiàn)用戶未登錄沒(méi)有,將用戶引導(dǎo)至登錄界面。用戶提交登錄信息到認(rèn)證中心。 簡(jiǎn)單登錄 登錄流程 首先讓我們分析一下一個(gè)簡(jiǎn)單的登錄是怎么實(shí)現(xiàn)的。 一個(gè)簡(jiǎn)單的登錄流程 用戶輸入url訪問(wèn)站點(diǎn),接受用戶請(qǐng)求后判斷用戶是否已經(jīng)登錄,若未登錄則跳轉(zhuǎn)到登錄頁(yè)面 用戶訪問(wèn)登錄頁(yè)面,填寫(xiě)并提交登錄表單 web應(yīng)用對(duì)登錄表單進(jìn)行驗(yàn)證,若...

    jasperyang 評(píng)論0 收藏0
  • Yii支持多域名cors原理

    摘要:說(shuō)明測(cè)試使用的接口域名,多域名為和。設(shè)置多域名嘗試直接通過(guò)的模塊追加值實(shí)現(xiàn),如下接口請(qǐng)求和響應(yīng)頭如下當(dāng)前域?yàn)?,需跨域?qǐng)求的資源。故通過(guò)該方法不能設(shè)置多域名進(jìn)行。 首發(fā)于 樊浩柏科學(xué)院 平常我們遇到跨域問(wèn)題時(shí),常使用 cors(Cross-origin resource sharin)方式解決。不知你是否注意到,在設(shè)置響應(yīng)頭 Access-Control-Allow-Origin 域的...

    Darkgel 評(píng)論0 收藏0
  • 進(jìn)一步優(yōu)化Yii2SSO登錄

    摘要:序言本文主要是對(duì)關(guān)于如何實(shí)現(xiàn)跨域的登錄的解析的改進(jìn),因?yàn)樵谀瞧恼轮形乙呀?jīng)寫(xiě)出了登錄的基本實(shí)現(xiàn)過(guò)程,現(xiàn)在是進(jìn)一步優(yōu)化。實(shí)現(xiàn)永久登錄狀態(tài)。只要不點(diǎn)擊退出登錄,就一直保持著登錄狀態(tài)。存在時(shí),提交表單判斷修改的過(guò)期時(shí)間,設(shè)置到極大值。 序言 本文主要是對(duì)關(guān)于Yii2如何實(shí)現(xiàn)跨域的SSO登錄的解析的改進(jìn),因?yàn)樵谀瞧恼轮形乙呀?jīng)寫(xiě)出了SSO登錄的基本實(shí)現(xiàn)過(guò)程,現(xiàn)在是進(jìn)一步優(yōu)化。主要優(yōu)化的部分有兩...

    羅志環(huán) 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<