You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Passport调用PassportUserProvider时报null参数错误如何解决

问题根因

错误触发的核心原因是当前请求使用**客户端凭证授权(Client Credentials Grant)**生成的令牌,Laravel Passport处理这类令牌时会默认使用clients作为auth provider名称,你现有config/auth.php中未定义对应provider,导致Auth::createUserProvider($config['provider'])返回null,不符合PassportUserProvider构造函数的参数类型要求。

解决方案

根据你的实际使用场景二选一即可:

场景1:当前路由为用户身份校验场景

auth:api中间件默认面向有对应用户实体的授权场景(密码授权、授权码授权等),客户端凭证令牌适用于无用户的服务间通信,不匹配该场景。

  • 替换为用户类授权生成的令牌发起请求即可解决
  • 服务间通信的路由请使用Passport自带的client中间件,不要使用auth:api

场景2:确实需要用客户端凭证令牌访问auth:api路由

两种实现方式任选其一:

方式1:补充clients provider配置

在config/auth.php的providers数组中添加对应配置:

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
    // 新增如下配置
    'clients' => [
        'driver' => 'eloquent',
        'model' => Laravel\Passport\Client::class,
    ],
],

修改完成后执行php artisan config:clear清空配置缓存即可生效。

方式2:强制Passport使用指定provider

在app/Providers/AppServiceProvider.php的boot方法中添加代码,强制Passport使用你配置的users provider:

use Laravel\Passport\Passport;

public function boot()
{
    Passport::useUserProvider('users');
}

修改完成后执行php artisan config:clear清空配置缓存即可生效。

内容的提问来源于stack exchange,提问作者Thakgrandka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:48:04