2017-04-08 48 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