关于session的问题

wuuyun

问题描述

登录代码

//登录成功 保存token 
$session = $request->session();
$session->set('usertoken', $token);
myJson是我封装的一个方法 返回response
$this->myJson(0,'ok',$token);

但是我登录成功后跳转到其它页面,却无法获取到token,或者获取到的token是以前的旧的token。
在这里卡了好久。
后来看了 session文件夹/发现并没有写入session文件。
直到加了

$session->save();

才正常。

疑问:我看首手册里不是 直接用set旧可以吗,为啥我的不行,有哪些原因呢造成的呢,中间件?还是我自己封装的方法有什么影响?

来了来了,经过代码审查,很有可能是__construct 惹的祸
我有个控制器基类,在里面进行了__construct;其它的控制器都要继承这个基类;
现在我把基类的一些必要参数,在中间件里放到了上下文中,
把登录的 sesion 代码 强制保存给注释了,也是可以成功的。
$session = $request->session();
$session->set('usertoken', $token);
// $session->save();

现在就可以了,

77 2 0
2个回答

lsmir2

文档有写,session对象销毁时会自动保存session数据你的问题应该是出在这里 对象没有销毁所以没有自动保存

  • wuuyun 1天前

    多谢, 我再审查下代码 到底是啥原因导致 没有自动销毁 保存session

ichynul

一般是循环引用之类的问题,导致请求就是没有销毁对象

  • 暂无评论
🔝