2017-10-17 81 views
0

我創建了自定義模型來登錄用戶。我正在使用sqlite作爲數據庫。 「用戶」表有「id」列,我沒有使用雄辯,所以我已經在auth.config文件中將驅動程序更改爲「數據庫」和表作爲「用戶」。Laravel會話立即到期(Laravel 5.5)

我的索引控制器檢查用戶是否已登錄。如果沒有,則重定向到登錄頁面。一旦提交了登錄表單(ajax調用),如果用戶輸入了錯誤的用戶名或密碼,它會以模式告訴用戶輸入了錯誤的憑證。如果用戶名和密碼爲真,則重定向到索引頁面。但是因爲用戶沒有被假定爲登錄,所以它又重定向到登錄頁面。此外,我試圖在成功嘗試(無重定向)後回顯用戶的ID,並且顯示沒有問題。但是在訪問索引頁後,我又被重定向到登錄頁面。

我試圖添加會話並顯示它,所以如果我調用下面的代碼;

session()->put('foo', 'bar'); 
echo session()->get('foo'); 

「bar」在頁面上回顯。但是,如果我在另一個頁面上回顯會話(因爲我已經添加了新會話而沒有添加新會話),則「頁面」未在頁面上回顯。

另請注意,沒有文件存儲在「storage/framework/sessions」文件夾中。

會話類型是文件和生存期是720.我也嘗試過「cookie」和「數據庫」。 「cookie」發生同樣的問題,但我得到了「數據庫驅動程序無法使用」與「數據庫」驅動程序(我已成功遷移必要的表)的異常。

另外該網站是在本地主機上(Windows 10)。所以我不認爲文件夾權限可能是一個問題。此外,我還在另一臺電腦上安裝了另一個Laravel(舊版本 - 它的值必須是5.4),並且工作正常。兩者都使用php 7和nginx服務器。

回答

0

所以我找到了我的問題。我創建了一個自定義ServiceProvider並定義了自定義路徑來創建模塊化系統。因爲我試圖在這裏「包含」路由文件,所以新的laravel路由系統將它作爲api路由。所以會議不可用。

現在我已經改變了我的代碼:

Route::middleware('web')->group($route_file); 

和航線表現爲網絡路由和會話工作。

希望看到這可以幫助他人解決這個問題。

0

檢查文件config/session.php上的會話配置。

如果您的會話驅動程序是文件,請確保您有storage/session文件夾的權限chmod -R 777 storage

此外,您可以檢查該文件上的lifetimeexpire_on_close配置以保留請求之間的會話。

+1

感謝您的回答,但我已經在我的問題中提到過這個預防措施。 –