国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

yii2中session跨域名的問題

rollback / 2226人閱讀

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

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

場景1

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

程序員:清緩存。

測試B:握草,dev也登錄不了。。。誰看看!

程序員:清緩存。

測試們:。。。唉

場景2

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

程序員B:可能還是要請緩存。

程序員A:沒用。

程序員B:我看看吧。

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

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

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

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

這樣就可以獲取到cookie中保存的sessionID了,感覺沒有任何問題。

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

那么上面問題如何解決呢?很簡單,domain這個(gè)參數(shù)默認(rèn)是當(dāng)前的域名,如果只允許當(dāng)前域名登錄訪問,使用默認(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跨域幾種的方案

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

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

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

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

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

也許你會問:如果是在不同的域名呢?采用P3P技術(shù)簡單解決,實(shí)現(xiàn)原理,在訪問網(wǎng)站x.com的時(shí)候,y.com程序觸發(fā)y.com文件的寫入sessionid值,sessionid值便可以獲取,然后把seesion值存入數(shù)據(jù)庫,取相同的sessionid值便可。這就要求y.com里面的程序文件必需能跨域訪問,默認(rèn)情況下,瀏覽器是不能跨域設(shè)置cookie的,加上p3p頭后才行。在對應(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ù)存儲位置一致的實(shí)現(xiàn)方法

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

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

main.php中應(yīng)該這般配置(同一套環(huán)境不會出現(xiàn)前面所說的問題,但是不同環(huán)境還會出現(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/30550.html

相關(guān)文章

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

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

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

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

    DirtyMind 評論0 收藏0
  • web登錄分析(簡單登錄與單點(diǎn)登錄)

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

    jasperyang 評論0 收藏0
  • Yii支持多域名cors原理

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

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

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

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

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<