鍍金池/ 問答/PHP/ 為什么laravel 5.4 不同級的地址會產(chǎn)生不同的session?

為什么laravel 5.4 不同級的地址會產(chǎn)生不同的session?

開發(fā)環(huán)境:
前后端兩套用戶系統(tǒng):
后臺主頁是:http://www.mysite.com/admin/
后臺登錄頁:http://www.mysite.com/admin/l...
商品管理頁:http://www.mysite.com/admin/m...
用戶管理頁:http://www.mysite.com/admin/user
當我訪問http://www.mysite.com/admin 時能夠正常跳轉(zhuǎn)到登錄頁,登錄成功后跳回/admin;

問題:
當在未登錄狀態(tài)訪問http://www.mysite.com/admin/m... 時,自動跳轉(zhuǎn)到登錄頁,登錄成功后仍然跳轉(zhuǎn)到/admin,此時實際已經(jīng)登錄,繼續(xù)輸入http://www.mysite.com/admin/m... 訪問仍然會跳轉(zhuǎn)到/admin。

已排查出的線索:
1、訪問:http://www.mysite.com/admin/m... 時,產(chǎn)生session(命名session1)
2、中間件驗證發(fā)現(xiàn)未登錄,跳轉(zhuǎn)至登錄頁,此時產(chǎn)生新的session(命名session2)
3、執(zhí)行登錄,登錄成功后產(chǎn)生session(命名session3),并且銷毀了session2。
4、此時再次訪問http://www.mysite.com/admin/m... 時程序獲取到session1,驗證未登錄跳轉(zhuǎn)至登錄頁,登錄頁使用session3驗證登錄成功回跳至后臺主頁/admin。造成永遠無法訪問商品管理頁的結(jié)果。

在訪問用戶管理頁時,都能成功,未出現(xiàn)此類情況。
目前排查問題不同層級的訪問路徑(路由)產(chǎn)生不同的session導致登錄狀態(tài)不一致。希望各位大神指點迷津。

回答
編輯回答
負我心

如果你的登錄認證用的是自帶的Auth,那么就有這種可能。
Auth是分guard的,guard就是用來解決這種前后端不同賬戶系統(tǒng)登錄的。
看看是不是用到的guard不一樣。

2017年3月2日 15:45
編輯回答
遺莣

已找到問題所在。
session的配置文件中有個變量path,這個path被人配置成一個基于windows的絕對路徑(自作孽不可活555555),此時laravel無法識別cookies存儲位置,按訪問地址存儲,所以導致訪問/admin/mall/product和訪問/admin/login時使用的是不同cookies,也就是需要生成多個session。

解決方案:將path配置成“/”就只剩一個session了

'path' => '/',
2017年11月21日 15:22