2017-04-08 47 views
0

我在Laravel 4中創建了「記住我」功能。爲此,我使用下面的代碼來設置自定義會話。我已經在登錄函數中設置了會話並在相同的函數中進行了檢查,然後給出了「一年」的正確結果。但是當我使用showDashboard()函數重定向到儀表板並在函數內再次檢查會話時,會話更改爲120分鐘,即「兩天」。Laravel 4 Cookie會話生命週期自動更改

登錄功能:

public function actionLogin{ 
    //User authentication code 

    $lifetime = time() + 60 * 60 * 24 * 365; // one year 
    Config::set('session.lifetime', $lifetime); 

    //Config::get('session.lifetime'); //<---Giving expected result i.e "One year" 
    return Redirect::to('/dashboard'); 
} 

儀表板功能:

public function showDashboard(){ 
     Config::get('session.lifetime'); //<--- Giving o/p 120 i.e two hours 
} 
+0

爲什麼不使用Laravel自己的認證和記住用戶? https://laravel.com/docs/5.4/authentication#remembering-users – Karl

+0

@Karl是的,我可以,但我使用的是Laravel 4 – Omkar

回答

0

當調用Config::set('session.lifetime', $lifetime);你只設置配置的一個實例,而不是覆蓋配置值(可以在config/session.php中找到)

因此,當你調用Config::get('session.lifetime')將返回默認值,即120

爲了改變這一點,我會修改app/config/session.php,所以這條線:

'lifetime' => 120 

變爲:

'lifetime' => 525600 

這將意味着默認值爲1年。

+0

謝謝,@Karl,但我想動態更改它,以便「記住我」功能... – Omkar

+0

在這種情況下,您希望創建一個cookie並指定一段時間,而不是更改會話的配置值。'Cookie :: make('name','value',$ lifetime)' – Karl