我有一个全新的Laravel 5安装,事实上我已经在多个版本上尝试了这个并继续遇到同样的问题.
除了将会话驱动程序设置为redis之外,我没有更改默认设置.(基于文件也有同样的问题).
我有两条路线设置如下
Route::get('/set/{value}', function($value) {
var_dump(Session::getId());
Session::set('test', $value);
return view('welcome');
});
Route::get('/get', function() {
return 'Get ' . Session::get('test');
});
Run Code Online (Sandbox Code Playgroud)
如果我访问url/set/abc,我看到会话出现在REDIS中(我也看到了使用基于文件时创建的文件).会议在REDIS中看起来很好,如下所示
127.0.0.1:6379> KEYS *
1) "laravel:1a3ae6caff6346e4a173fdc1ab4c6eb0f138806b"
2) "laravel:fed1af2fb44c6e625953237c3fa6fcbb05366a5c"
3) "laravel:cb37286ccfe3e7caa20557aca840f50cb5a5f20d"
Run Code Online (Sandbox Code Playgroud)
每次我访问该页面时,它都会重新创建一个新会话.
session.php文件的关键部分如下:
'lifetime' => 120,
'expire_on_close' => false,
Run Code Online (Sandbox Code Playgroud)
我还在REDIS中检查了会话变量的TTL,它们确实在120分钟时初始化(相当于秒).
知道我做错了什么吗?
值得注意的是,我正在使用宅基地vm(完全库存)来测试这一点.我也试过使用多个浏览器.没有cookie被发送到浏览器,我假设会话ID应作为初始get请求的一部分发送到浏览器?