【发布时间】:2016-04-29 18:08:24
【问题描述】:
我有一个全新的 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');
});
如果我访问 url /set/abc 我看到会话出现在 REDIS 中(我还看到使用基于文件时创建的文件)。会话在 REDIS 中看起来很好,如下所示
127.0.0.1:6379> KEYS *
1) "laravel:1a3ae6caff6346e4a173fdc1ab4c6eb0f138806b"
2) "laravel:fed1af2fb44c6e625953237c3fa6fcbb05366a5c"
3) "laravel:cb37286ccfe3e7caa20557aca840f50cb5a5f20d"
但每次我访问该页面时,它都会重新创建一个新会话。
session.php文件的关键部分如下:
'lifetime' => 120,
'expire_on_close' => false,
我还在 REDIS 中检查了会话变量的 TTL,它们确实在 120 分钟(以秒为单位)初始化。
知道我做错了什么吗?
值得注意的是,我正在使用宅基地 vm(完全库存)来测试这一点。我也尝试过使用多个浏览器。从来没有向浏览器发送任何 cookie,我认为会话 ID 应该作为初始获取请求的一部分发送到浏览器?
【问题讨论】:
-
这真的很奇怪......我正在尝试在本地复制这种行为。我想知道
getId方法是否做了一些讨厌的事情 -
@FBidu 我尝试过使用和不使用 getId 函数,它似乎并没有以任何方式影响它,我得到了同样的奇怪行为。
-
@FBidu 实际上
getId做了它所暗示的事情,仅此而已:)。 -
我可以在这里复制问题!
-
@JonTaylor 似乎是!我无法以任何方式修复...
标签: php laravel session laravel-5 session-cookies