项目中的登录模块需要使用到session来保存用户的登录态,但是设置之后在另外的控制器中就获取不到,几番寻找终于解决
起因测试
在index/controller/index方法中
$session = session('test','session'); // 设置session
dump(session('test')); // 打印 'session'
登录控制器api/member/login方法中
$session = session('test'); // 获取session
dump($session); // 打印 bool(true)
为啥??
起码也要给我返回个null或者false啥的,给个true还真是让人摸不着头脑
解决
根据多方消息,得到一下多种解决方案
- 修改 php.ini 中 session.use_trans_sid = 1,无效果
- ajax配置
xhrFields: {
withCredentials: true
},
crossDomain: true
axios配置
axios.defaults.withCredentials = true;
好像也不行
最后在控制器中添加
header("Access-Control-Allow-Origin: *");
就可以了,按理说前端设置header头应该也可以
基于这套,对tp的Cache也适用