簡介
passport多使用者登入,剛好自己也做了相關的操作,就記錄一下怎麼做的。不知道和你們想要的效果是不是這樣的。
1. 安裝passport
文件有教程,就不再敘述
2. config/auth 授權看守器,增加多個模組
配置檔案 config/auth.php 中授權看守器
guards 內可以設定多個 driver 為 passport 的模組
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
'wechat' => [
'driver' => 'passport',
'provider' => 'members',
]
],
3. 定義providers
這裡定義不同的 eloquent 模型
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'members' => [
'driver' => 'eloquent',
'model' => App\Models\Member::class,
],
],
4. 生成指定 guard 的加密秘鑰
artisan passport:client --password --provider // 生成密碼授權
# --provider 指定 guard
# 為令牌命名 例如:wechat
What should we name the password grant client? [Laravel Password Grant Client]:
> wechat
# 回車確認
# 隨後會出現選擇 guard 的詢問欄,選擇你之前定義的看守器對應的 eloquent 模型
# 輸入對應數字即可 示例:1
Which user provider should this client use to retrieve users? [users]:
[0] users
[1] members
>1
5. 配置路由分組
修改routes下對應的路由檔案
Route::middleware('auth:api')->group(function () {
// api端驗證的走這裡
});
Route::middleware('auth:wechat')->group(function () {
// wechat端驗證的走這裡
});
6. 使用之前生成 client_id 和 secret 發放令牌
結語:前後臺分離或者區分app端,小程式端等,都是可以的
本作品採用《CC 協議》,轉載必須註明作者和本文連結