2017-02-02 92 views
4

我想在login页面中添加一个复选框“保持登录状态”。Laravel 5 - 永远保持登录状态

除非用户注销,否则不应该结束用户的会话。

我知道,在应用程序/配置/ session.php文件我有这些变量:

'lifetime' => 60, 

'expire_on_close' => false, 

,但我想永远保持活着的会话,并不会被删除,如果用户关闭他的导航员。

关于如何进行的任何想法? 谢谢

+0

我不相信你可以将其设置为永不过期,但没有上限,所以你可以把它设置为100年。 –

回答

3

Laravel有一个内置的功能remember users,我强烈推荐使用它。

如果你愿意提供“记住我”你 应用程序的功能,你可以通过一个布尔值作为第二个参数 尝试的方法,这将让用户身份验证 无限期,或直到他们手动注销。当然,您的用户 表必须包含字符串remember_token列,这将用于存储“记住我”标记的 。

if (Auth::attempt(['email' => $email, 'password' => $password], $remember)) { 
    // The user is being remembered... 
} 
如果你想手动解决问题

,对于这种解决方法:你必须设置过期您的Cookie的日期在宽将来的日期,有点像2050年,这在技术上是不永远,但通常应该足够长。

+0

我只是按照你写的“记住用户”的链接,但有不需要像你所说的解决方法。 'attempt'函数的第二个参数正在工作:'Auth :: attempt(['email'=> $ email,'password'=> $ password],Input :: get('remember_me',false))' 。 谢谢 – dani24

+1

很高兴为你工作。 :)我的意思是解决方法是另一种选择,如果你不想使用记忆我功能。更新了我的答案以清楚地说明。 – passioncoder

0

您可以将lifetime选项设置为35791394。这是一个maximum possible number for 32-bit machines

'lifetime' => 35791394, // Session will expire in 68 years. 
+0

是的,但是不想被记住的用户发生了什么? – dani24

+0

设置会话时间后,正常注销谁登录时会发生什么情况,而不记住我的令牌? –

+0

这也会影响未登录的用户的会话,包括任何漫游器,例如Elastic Beanstalk健康检查。我不会推荐它。 (一两个小时之后,我在我的数据库中有1,700个“ELB-Healthcheck”会话 - 在这个改变之后这个会话不会过期68年。) –

2

你可以设置一些大的值。我在7900年

现在试图

即365 * 24 * 60 * 7990 =4152240000分钟

'lifetime' => 4152240000 
+0

不适用于32位系统,对于64位系统,最大数量为['153722867280912930'](http:// stackoverflow。com/questions/41333527/whats-the-the-laravel-lifetime-config-variable-in-se) –

+0

我试过了我的系统。我的系统是64位。这是我可以尝试的最大值。拉拉维尔给出的错误不超过9999年,但不超过9999年。 – Vikash

+0

Laravel 5.3,我以前评论的Mac OS(64位)值工作得很好。 –