Lim*_*nte 9 php session laravel laravel-5
这是config/session.php
:
return [
'driver' => 'file',
'files' => storage_path().'/framework/sessions',
];
Run Code Online (Sandbox Code Playgroud)
我storage/framework/sessions
有755的权限.
当我把这两行放在我的控制器中时
Session::set('aa', 'bb');
dd(Session::get('aa'));
Run Code Online (Sandbox Code Playgroud)
我收到预期的"bb"
输出.但如果我评论第一行:
// Session::set('aa', 'bb');
dd(Session::get('aa'));
Run Code Online (Sandbox Code Playgroud)
和刷新页面,我仍然期待,"bb"
但得到null
.
也是storage/framework/sessions
空的.
我该怎么做才能使Session工作?
Bog*_*dan 18
Laravel 5通过一个名为的中间件类来处理会话StartSession
.更重要的是,这个中间件是一个TerminableMiddleware
实际保存数据的代码(在您的情况下是会话文件)位于terminate
方法中,该方法在请求生命周期结束时运行:
public function terminate($request, $response)
{
if ($this->sessionHandled && $this->sessionConfigured() && ! $this->usingCookieSessions())
{
$this->manager->driver()->save();
}
}
Run Code Online (Sandbox Code Playgroud)
在调用中间件dd(Session::get('aa'));
的terminate
方法之前调用请求时.
有趣的是,Laravel中间件文档实际上以Laravel StartSession
中间件为例解释了可终结中间件逻辑:
例如,Laravel附带的"会话"中间件在将响应发送到浏览器后将会话数据写入存储.
话虽如此,尝试使用var_dump()
而不是使用dd()
.
归档时间: |
|
查看次数: |
14462 次 |
最近记录: |