2015-12-02 38 views
0

我們的Laravel 5.1應用程序一直使用「native」會話驅動程序設置(在.env文件中配置)。通過這種方式,我們可以使用laravel url.intended行爲將用戶重定向到他們嘗試訪問的url,然後進行身份驗證。當會話驅動程序設置爲cookie時,Laravel 5 url.intended破壞

我們必須將其更改爲「cookie」,因爲每次我們使用Amazon的Opsworks系統部署新版本時,用戶都已註銷,因爲他們的服務器端會話文件不再可用。一旦我們將其更改爲cookie,即使在部署修補程序或新版本時,用戶仍保持登錄狀態。

但是,將它設置爲cookie後,url.intended根本不起作用。我試圖通過添加一個自定義的url意向節點來一起攻擊一些解決方案,但它不會工作。這似乎是用戶在登錄之前嘗試訪問URL的時候,它設置了會話信息,但是應用程序會將用戶重定向到登錄頁面,在該頁面中它將被清除。

我使用Debugbar來查看會話變量,我要瘋了。我已經禿頂,所以我沒有更多的頭髮拔出。

有沒有人有任何想法?

+0

https://laracasts.com/discuss/channels/laravel/redirect-intended-not-giving-the-intended-behavior有類似的問題,問題是他的自定義中間件。你有這個定製的中間件嗎? –

+0

我認爲最好的選擇是使用redis或memcached作爲會話驅動程序..多數民衆贊成的方式,即使在服務器更改 –

+0

謝謝@BrynnBateman。我已經回顧了這一點,並且盡我所知,我們並未使用定製中間件。當我升級到Laravel 5.1時,我遵循了他們的指示,我們做的唯一改變是添加一箇中間件功能,但是這對於管理員用戶來說並不是我們遇到問題的地方。否則,我所做的只是按照Laravel指令將路由中的「before」更改爲「middleware」。 –

回答

0

我們最初設置了Dynamo數據庫,然後在普通服務器上轉換到Redis。我們有一個負載平衡器,並且不希望會話會因爲切換服務器而丟失或損壞,因此所有緩存現在都存儲在該公共位置。