2017-08-10 51 views
1

我試圖讀取Laravel5.4中的cookie。所以我成功通過第三方授權服務器進行驗證後得到了cookies。我不是在laravel5.4中製作cookie,但是我正在閱讀從視圖/前端發送給我的cookie值。我可以在Chrome調試器環境以及PHP全局變量$ _COOKIE中看到cookie的值。他們都設置正確。

但是,當我試圖從控制器方法使用$ request-> cookie('key')來讀取同一個cookie時,它什麼也沒有顯示。我也嘗試Cookie外觀讀取值,仍然沒有。此控制器正在處理重定向路由,該路由在重定向到我的URL時由第三方oauth服務器和此服務器調用,並且還設置了Cookie。

我是不是在Laravel5.4的web.php文件中正確設置這個重定向url路徑?這是它是如何在web.php定義如下:

路線::獲得( '登錄/ 1563 /回調', '驗證\的LoginController @ handleProviderCallback');

當我傾銷內容時請求對象爲空,但$ _COOKIE有數據。

回答

3

Laravel的cookie類加密和解密cookie的值(請參見App\Http\Middleware\EncryptCookies中間件)。當你看到它沒有設置的cookie時,它會嘗試(並失敗)解密它。

如果你有從外面Laravel一個cookie集,使用$_COOKIE與它的工作,或添加cookie的名字到$except陣列中app/Http/Middleware/EncryptCookies.php所以它不與混亂。

+0

ceejayoz - 順便說一句,你可以請你提供一些解釋你的第一段?我不太明白你想說什麼。 – Andy

+1

@Andy默認情況下,Laravel加密所有Cookie。這也意味着它試圖解密所有的cookie,甚至不是來自Laravel的。 當您嘗試訪問第三方cookie時,Laravel認爲應該通過請求將其解密。解密的結果是無效的,所以你最終得到一個空字符串。 通過將Cookie添加到'$ except'數組中,您告訴Laravel應用程序您不希望對該特定的Cookie進行加密或解密。 –