为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕姐8265434 2018-09-02 10:50:24
开发环境:前后端两套用户系统:后台主页是: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导致登录状态不一致。希望各位大神指点迷津。
查看完整描述

2 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

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

解决方案:将path配置成“/”就只剩一个session了

'path' => '/',


查看完整回答
反对 回复 2018-09-02
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

如果你的登录认证用的是自带的Auth,那么就有这种可能。
Auth是分guard的,guard就是用来解决这种前后端不同账户系统登录的。
看看是不是用到的guard不一样。

查看完整回答
反对 回复 2018-09-02
  • 2 回答
  • 0 关注
  • 695 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信