Laravel 的 session getId 和 setId 的问题 ?

我在服务端先往session里存了一些东西,比如

session([
  'a' => 'a1',
]);

然后

return [
    'sessionid' => $request->session()->getId()
];

客户端拿到这个sessionid,然后放到请求头里发请求

wx.request({
  header: {
    sessionid: '40位的sessionid'
  }
});

然后我在服务端

$sessionId = $request->header('sessionid');
$request->session()->setId($sessionid);

然后用session辅助函数取刚才存在session里的东西,就取不到啦

这样拿不到这个session的数据吗

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

建议多阅读一下源码,多理解一下 session 相关工作方式。

另外可以参考 App\Http\Kernel 中启用 session 的中间件 \Illuminate\Session\Middleware\StartSession::class 是如何调用 session 的。

关于你的问题,试试下面的代码。

    $router->get('/session1', function () {
        session(['abc' => 'ddd']);
        return session()->getId();
    });

    $router->get('/session2', function (\Illuminate\Http\Request $request) {
        session()->setId($request->header('session_id'));
        session()->start();
        return session()->all();
    });

话说你这种使用 session 的方式很奇怪,也不安全。

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!