我有一個全新安裝的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