我想在login
頁面中添加一個複選框「保持登錄狀態」。Laravel 5 - 永遠保持登錄狀態
除非用戶註銷,否則不應該結束用戶的會話。
我知道,在應用程序/配置/ session.php文件我有這些變量:
'lifetime' => 60,
'expire_on_close' => false,
,但我想永遠保持活着的會話,並不會被刪除,如果用戶關閉他的導航員。
關於如何進行的任何想法? 謝謝
我想在login
頁面中添加一個複選框「保持登錄狀態」。Laravel 5 - 永遠保持登錄狀態
除非用戶註銷,否則不應該結束用戶的會話。
我知道,在應用程序/配置/ session.php文件我有這些變量:
'lifetime' => 60,
'expire_on_close' => false,
,但我想永遠保持活着的會話,並不會被刪除,如果用戶關閉他的導航員。
關於如何進行的任何想法? 謝謝
Laravel有一個內置的功能remember users,我強烈推薦使用它。
如果你願意提供「記住我」你 應用程序的功能,你可以通過一個布爾值作爲第二個參數 嘗試的方法,這將讓用戶身份驗證 無限期,或直到他們手動註銷。當然,您的用戶 表必須包含字符串remember_token列,這將用於存儲「記住我」標記的 。
if (Auth::attempt(['email' => $email, 'password' => $password], $remember)) {
// The user is being remembered...
}
如果你想手動解決問題
,對於這種解決方法:你必須設置過期您的Cookie的日期在寬將來的日期,有點像2050年,這在技術上是不永遠,但通常應該足夠長。
我只是按照你寫的「記住用戶」的鏈接,但有不需要像你所說的解決方法。 'attempt'函數的第二個參數正在工作:'Auth :: attempt(['email'=> $ email,'password'=> $ password],Input :: get('remember_me',false))' 。 謝謝 – dani24
很高興爲你工作。 :)我的意思是解決方法是另一種選擇,如果你不想使用記憶我功能。更新了我的答案以清楚地說明。 – passioncoder
您可以將lifetime
選項設置爲35791394
。這是一個maximum possible number for 32-bit machines:
'lifetime' => 35791394, // Session will expire in 68 years.
是的,但是不想被記住的用戶發生了什麼? – dani24
設置會話時間後,正常註銷誰登錄時會發生什麼情況,而不記住我的令牌? –
這也會影響未登錄的用戶的會話,包括任何漫遊器,例如Elastic Beanstalk健康檢查。我不會推薦它。 (一兩個小時之後,我在我的數據庫中有1,700個「ELB-Healthcheck」會話 - 在這個改變之後這個會話不會過期68年。) –
你可以設置一些大的值。我在7900年
現在試圖即365 * 24 * 60 * 7990 =4152240000分鐘
'lifetime' => 4152240000
不適用於32位系統,對於64位系統,最大數量爲['153722867280912930'](http:// stackoverflow。com/questions/41333527/whats-the-the-laravel-lifetime-config-variable-in-se) –
我試過了我的系統。我的系統是64位。這是我可以嘗試的最大值。拉拉維爾給出的錯誤不超過9999年,但不超過9999年。 – Vikash
Laravel 5.3,我以前評論的Mac OS(64位)值工作得很好。 –
我不相信你可以將其設置爲永不過期,但沒有上限,所以你可以把它設置爲100年。 –