为什么laravel 5.4 不同级的地址会产生不同的session?

开发环境:
前后端两套用户系统:
后台主页是: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 时能够正常跳转到登录页,登录成功后跳回/admin;

问题:
当在未登录状态访问http://www.mysite.com/admin/m... 时,自动跳转到登录页,登录成功后仍然跳转到/admin,此时实际已经登录,继续输入http://www.mysite.com/admin/m... 访问仍然会跳转到/admin。

已排查出的线索:
1、访问:http://www.mysite.com/admin/m... 时,产生session(命名session1)
2、中间件验证发现未登录,跳转至登录页,此时产生新的session(命名session2)
3、执行登录,登录成功后产生session(命名session3),并且销毁了session2。
4、此时再次访问http://www.mysite.com/admin/m... 时程序获取到session1,验证未登录跳转至登录页,登录页使用session3验证登录成功回跳至后台主页/admin。造成永远无法访问商品管理页的结果。

在访问用户管理页时,都能成功,未出现此类情况。
目前排查问题不同层级的访问路径(路由)产生不同的session导致登录状态不一致。希望各位大神指点迷津。


慕姐8265434
浏览 696回答 2
2回答

SMILET

已找到问题所在。session的配置文件中有个变量path,这个path被人配置成一个基于windows的绝对路径(自作孽不可活555555),此时laravel无法识别cookies存储位置,按访问地址存储,所以导致访问/admin/mall/product和访问/admin/login时使用的是不同cookies,也就是需要生成多个session。解决方案:将path配置成“/”就只剩一个session了'path' => '/',

胡子哥哥

如果你的登录认证用的是自带的Auth,那么就有这种可能。Auth是分guard的,guard就是用来解决这种前后端不同账户系统登录的。看看是不是用到的guard不一样。
打开App,查看更多内容
随时随地看视频慕课网APP