因為Laravel 5.3開始無法在Controller的__construct()
方法中使用Auth::check()
和Auth::user()
這樣的函數(因為Session沒開始起作用)
(可參考官方文件的說明在Controller部分, 但這個方法不適用於此場景)
又懶得在每個函數都寫
if (Auth::check()) {
$user = Auth::user()
}
目前唯一的偷懶方法就是Controller全域變數了, Google搜到之前有人用App::before()
方法來做的, 但這個方法似乎在5.4被取消了?
有人知道Laravel 5.4怎麼實現嗎?
用Config來實現的都散了吧, 在這裡很顯然不適合.
感謝@安正超 在Laravel China提供的解決方法:Laravel 5.3+ 控制器裡如何取得登入使用者
首先,使用者校驗完全可以透過中介軟體去控制,放在控制器的建構子裡並不合適。
另外,
Container
是個好東西,不光可以存實例,存些全域變數又未嘗不可呢?中間件是你最好的選擇laravel中間件文件