2017-09-25 70 views
0

我正在使用Laravel 5.5。我配置了許多使用會話驅動程序的身份驗證警衛。每個人都有不同的用戶提供者。提供者都使用雄辯的驅動程序,但是每個提供者創建不同類型的用戶,例如, App\User\StaffApp\User\Customer這是Laravel會話處理不一致的bug嗎?

此外,我爲每個用戶類型設置了子域路由,例如, staff.mydomain.comcustomer.mydomain.com。今天,我很高興地發現,如果我在一個子域中登錄,則該信息不會與其他域共享(默認情況下爲默認值)。這意味着我可以作爲工作人員在一個瀏覽器選項卡上登錄,也可以在另一個瀏覽器選項卡上作爲客戶登錄。

或者至少這是我的想法。

這適用於文件會話驅動程序,但使用數據庫驅動程序時無法預知。數據庫顯示了每個子域的新會話記錄,正如我所期望的那樣,會話ID在登錄時被刷新。雖然我檢查了Auth::check(),但在一個選項卡中顯示正確(即登錄了一名警衛,其他人登錄)。在另一個標籤中,它顯示了所有警衛的客人。

我嘗試了這種來回(文件/數據庫會話驅動程序),並且文件驅動程序始終保持一致,並且數據庫驅動程序始終如一。這是一個錯誤?還是有什麼我缺少基於會話的身份驗證和子域?

+0

也許你沒有網絡中間件 –

回答

0

經過很多調試,我終於整理出來了。

子域與問題無關。問題是我使用了artisan session:table命令生成的默認會話表。它創建一個user_id字段作爲整數類型。我的用戶名是uuid。

我把這貼在這裏作爲一個警示故事!