sanctum多角色认证的问题

在项目中存在商户和客户两种身份,使用sanctum做的api认证,

但是问题是Merchant model生成的token不能通过auth:merchant中间件的验证,反而是Customer model生成的token可以通过auth:merchant中间件的验证。请问这块是否有对应的配置能让token和对应的验证项对应起来。

配置和代码如下:

config/auth.php

'guards' => [
    'customer' => [
    'driver' => 'sanctum',
    'provider' => 'customers'
    ],

    'merchant' => [
    'driver' => 'sanctum',
    'provider' => 'merchants'
    ]
],

'providers' => [
    'customers' => [
    'driver' => 'eloquent',
    'model' => App\Models\Customer::class,
    ],

    'merchants' => [
    'driver' => 'eloquent',
    'model' => App\Models\Merchant::class
    ]
],

Model

use Laravel\Sanctum\HasApiTokens;
use Illuminate\Foundation\Auth\User as Authenticatable;

class Merchant extends Authenticatable
{
    use HasFactory, SoftDeletes, HasApiTokens;
}
use Laravel\Sanctum\HasApiTokens;
use Illuminate\Foundation\Auth\User as Authenticatable;

class Customer extends Authenticatable
{
    use HasFactory, SoftDeletes, HasApiTokens;
}

merchant.route.php

Route::post('login', [LoginController::class, 'login']);
Route::middleware(['auth:merchant'])->group(function (){
    Route::get('test', [ProductController::class, 'test']);
});

customer.route.php

Route::post('login', [LoginController::class, 'login']);
Route::middleware(['auth:customer'])->group(function (){
     Route::get('test1', [ProductController::class, 'test1']);
});

MerchantController

public function login(Request $request)
{
    $merchant = Merchant::query()->find(1);
    $token = $merchant->createToken($merchant->name);
    return $this->ok([
    'token' => $token->plainTextToken
    ]);
}

CustomerController

public function login(Request $request)
{
    $customer = Customer::query()->find(1);
    $token = $customer->createToken($merchant->name);
    return $this->ok([
    'token' => $token->plainTextToken
    ]);
}
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!