gpt4 book ai didi

php - Laravel 5 - session 不起作用

转载 作者:可可西里 更新时间:2023-11-01 12:27:40 28 4
gpt4 key购买 nike

这是config/session.php:

return [
'driver' => 'file',
'files' => storage_path().'/framework/sessions',
];

我的 storage/framework/sessions 有 755 权限。

当我将这两行放入我的 Controller 时

Session::set('aa', 'bb');
dd(Session::get('aa'));

我收到预期的 "bb" 输出。但是如果我评论第一行:

// Session::set('aa', 'bb');
dd(Session::get('aa'));

并刷新页面,我仍然期待 "bb" 但得到 null

另外,storage/framework/sessions 是空的。

我应该怎么做才能让 Session 工作?

最佳答案

Laravel 5 通过名为 StartSession 的中间件类处理 session .更重要的是,这个中间件是一个TerminableMiddleware并且实际保存数据的代码(在您的情况下保存到 session 文件)位于 terminate方法,在请求生命周期结束时运行:

public function terminate($request, $response)
{
if ($this->sessionHandled && $this->sessionConfigured() && ! $this->usingCookieSessions())
{
$this->manager->driver()->save();
}
}

调用dd(Session::get('aa'));时请求在 terminate 之前被中断可以调用中间件的方法。

有趣的是,Laravel Middleware Documentation实际上通过给 Laravel StartSession 来解释可终止中间件逻辑中间件为例:

For example, the "session" middleware included with Laravel writes the session data to storage after the response has been sent to the browser.

也就是说,尝试使用 var_dump()而不是使用 dd() .

关于php - Laravel 5 - session 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29346743/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com