Laravel 4 cookie 会话生命周期自动更改

Posted

技术标签:

【中文标题】Laravel 4 cookie 会话生命周期自动更改【英文标题】:Laravel 4 cookie session lifetime getting changed automatically 【发布时间】:2017-09-04 03:11:49 【问题描述】:

我在 Laravel 4 中创建了“记住我”功能。为此,我使用下面的代码来设置自定义会话。我已经在登录功能中设置了会话并在同一功能中进行了检查,然后它给出了正确的结果,即“一年”。但是当我使用 showDashboard() 函数重定向到仪表板并在函数内再次检查会话时,会话更改为 120 分钟,即“两天”。

登录功能:

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 

【问题讨论】:

为什么不使用 Laravel 自己的认证和记忆用户呢? laravel.com/docs/5.4/authentication#remembering-users @Karl 是的,我可以,但我使用的是 Laravel 4 【参考方案1】:

当调用Config::set('session.lifetime', $lifetime); 时,您只是为那个实例设置配置,而不是覆盖配置值(可以在 config/session.php 中找到)

所以当您调用Config::get('session.lifetime') 时,它将返回默认值,即 120。

为了改变这一点,我将修改app/config/session.php,以便这一行:

'lifetime' => 120

变成:

'lifetime' => 525600

这意味着默认值为 1 年。

【讨论】:

谢谢@Karl,但我想通过动态更改它以实现“记住我”功能... 在这种情况下,您需要创建一个 cookie 并指定时间长度,而不是更改会话的配置值。Cookie::make('name', 'value', $lifetime)

以上是关于Laravel 4 cookie 会话生命周期自动更改的主要内容,如果未能解决你的问题,请参考以下文章

cookie超过生命周期后会失效,问题是失效是指cookie文件被删还是浏览器不再使用该cookie但文件仍在

如何在 Symfony 中延长会话 cookie 的生命周期?

Android WebView / CookieSyncManager 中会话 cookie 的生命周期

如何同步表单身份验证 cookie 和 Asp.Net 会话的生命周期?

Laravel 5 - 用户在会话生命周期后不注销

SESSION和COOKIE的生命周期以及它们之间的关联