我有一个全新安装的Laravel 5,事实上,我已经尝试了多个版本并继续触及相同的问题。我的Laravel 5.2.10会话不会持久
除了将会话驱动程序设置为redis之外,我没有更改默认设置。 (基于文件也有相同的问题)。
我有两条路线设置如果我访问的URL /设置/ ABC我看到会话出现在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');
});
(我也看到了使用基于文件时创建的文件)。在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(完全股票)来测试这个。我也尝试使用多个浏览器。没有cookies被发送到浏览器,我认为会将session ID作为初始获取请求的一部分发送给浏览器?
这真的很奇怪......我想在本地复制行为。我想知道'getId'方法是否会产生令人讨厌的效果 – FBidu
@FBidu我尝试过并没有getId函数,它似乎没有以任何方式影响它,我得到了相同的奇怪行为。 –
@Fidu实际上['getId'](https://github.com/laravel/framework/blob/5.2/src/Illuminate/Session/Store.php#L162-L165)做它意味着它所做的事,除此之外: )。 – Bogdan