2016-01-24 155 views
3

我是Laravel的新手,我瞭解了模型,視圖,刀片,控制器和路由以及它們如何一起工作。到目前爲止,一切工作都順利進行。Laravel 5.2.11,會話不工作,會話cookie未設置

雖然我遇到了麻煩。

當我使用Laravel附帶的AuthController並通過POST請求命中auth/register時,我註冊的用戶的數據會插入到users表中(使用mysql),我確實會收到響應「位置」標題重定向到/喜歡它開箱即用。它應該像它應該重定向。但是在相同的響應中沒有「Set-Cookie」頭部集/發送。 Laravel的會話部分對我來說工作不正常。這與POST驗證/登錄相同,驗證正確並重定向到配置文件頁面,但不會在響應中發回會話cookie。

我使用:

  • Laravel 5.2.11
  • PHP 5.5.9
  • 是Xubuntu 14.04(Ubuntu的)
  • Linux內核3.19.0-42泛型
  • 作曲1.0

Laravel要求安裝所有php模塊。我正在用php內置的web服務器運行應用程序。我用sudo運行它。我運行的確切命令是這樣的:

sudo php -S localhost:8888 -t public/ 

所有路由正在正確響應。

我已經嘗試過通過laravel可執行文件和作曲程序創建項目安裝Laravel安裝文檔建議的兩種方法。仍然沒有設置餅乾的方式。我已經制作了laravel project mod 777的所有文件和目錄。如果有任何區別,應用程序密鑰將設置爲.env。

config/session.php文件正在使用會話的文件驅動程序。 設置會話後,storage/framework/sessions目錄中沒有會話文件。

當我嘗試設置會話自己與會話功能就像它在文檔中指出:

session(['sesskey' => 'somevalue']); 

同樣沒有「設置Cookie」頭響應中發送和沒有創建會話文件。沒有報錯的消息,我應該添加。

當我設置與會話功能的會話密鑰像上面我可以得到該值重新但是和回聲回瀏覽器,像這樣:

echo session('sesskey'); 

因此它似乎至少保存在PHP的記憶。

當我嘗試使用withCookie方法設置cookie,我得到與Set-Cookie頭設置適當的響應:

return response()->view('welcome')->withCookie(cookie("test", "val" , 3600)); 

我試着下去的照射兔子洞,看看我能找到一個問題,但這是在我頭腦atm。

任何幫助將非常appriciated,謝謝!

+0

我假設所有這些路線都應用了「網絡」中間件? – lagbox

+0

路線文件確實包含是的。 –

+0

和所有工作不正常的路由都在該組中? – lagbox

回答

8

在laravel 5.2,您需要使用您的問題 「網絡」 的中間件,像

Route::group(['middleware' => ['web']], function() { 
// 
}); 
+0

謝謝你。是的,將要使用會話的路線必須包含在網絡中間件的功能中。我想初學者應該通過laravel doc材料和網站上的教程。我之前已經看到過這個問題,但有關會話不會持續,但我沒有看到任何人提到網絡中間件的答案。 –

+0

你是對的@LarryLawless每個初學者都應該瀏覽laravel doc材料和網站上的教程。 –

0

使用中間件請求\照亮\會議\中間件\ StartSession ::類

Route::group(['middleware' => [\Illuminate\Session\Middleware\StartSession::class]], function() { 

});