Laravel Auth 更為簡便的使用

Siam發表於2020-05-20

前言

眾所周知,我們絕大多數專案最少會有前臺展示頁面【不管是pc還是wap】和一個後臺管理頁面
那麼在使用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 協議》,轉載必須註明作者和本文連結

相關文章