如上篇,Laravel JWT預設只能認證一種user,但實務上我們可能有不同的role需要各自做Authentication,例如我們有管理員、客戶、員工,等等。
Note: 小弟一開始是參考了網路上各種教學,但都是Laravel較舊版本的教學,經測試在Laravel 8無法work(也有可能是我的問題XD),後來try出這個方法可行。
以下以employee與user來示範。
直接來看程式碼:
這邊是route的配置,與url pattern有關。
Models的部分,根據需求新增employee, user兩個model。
Controller的部分,以auth:user、auth('user')來說,這個user的guard name,與config/auth.php中的guard name是mapping的。
config/auth.php:
defaults guard原本是api,但已經改掉了,這邊設employee or user即可。
這邊可以看到guards中還有provider,是跟下面的providers mapping的,providers中的model則是對應到設定的model class。
根據這樣的對應關係,登入的時候會到指定的model table裡抓資料,來驗證帳密對不對。
結果demo: