前言
眾所周知,我們絕大多數專案最少會有前臺展示頁面【不管是pc還是wap甚至於api】和一個後臺管理頁面
那麼在使用Auth門面進行使用者管理時,因為資料表的不一致,你可能會書寫如下程式碼
前臺使用
// 驗證
Auth::guard('home')->check();
// 取出使用者
Auth::guard('home')->user();
後臺使用
// 驗證
Auth::guard('admin')->check();
// 取出使用者
Auth::guard('admin')->user();
你會發現你都會使用guard來指定使用者組,對於我這種懶人來說,這種明顯是不太智慧化的
解決方法
以下是我自己使用laravel以來一直使用的小方法,已經很久了,不知道有沒有人公佈出來過類似的方法
其實很簡單,只需要在使用端的路由,新增一個基礎中介軟體,讓基礎中介軟體來修改config預設配置即可
核心程式碼
config([
'auth.defaults.guard' => 'admin'
]);
然後你就可以在後臺直接使用,前臺和其他端同理
// 驗證
Auth::check();
// 取出使用者
Auth::user();
附上自己的demo部分原始碼給予參考
admin路由檔案描述
路由服務提供者程式碼
中介軟體檔案程式碼
這裡就不再贅述如何定義中介軟體了,可以自己去查詢中介軟體文件
最後可能會有人想直接寫在對應端的BaseController不也一樣嗎,但是如果當你的請求還沒有到控制器呢?
比如登入驗證不就是在中介軟體內進行的嗎?
比如表單驗證不也還是在控制器之前嗎?【前提是你在request前用到了Auth,比如某個資料主鍵你希望是當前使用者可管理的】
本作品採用《CC 協議》,轉載必須註明作者和本文連結