2017-02-02 90 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位)值工作得很好。 –