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

Laravel 11+Passport注册报错:Attempt to read property "secret" on null

Laravel 11 Passport:调用createToken时出现"Attempt to read property 'secret' on null"错误

问题核心

在Laravel 11 + Passport环境下,执行$artist->createToken('Token Name')->accessToken生成API令牌时触发500错误,报错Attempt to read property "secret" on null,根源是Passport的Personal Access Client未正确创建或配置,导致代码中$client变量为null,访问其secret属性时出错。

解决方案

1. 重新生成Passport Personal Access Client

在终端执行命令,确保生成Personal Access Client:

php artisan passport:install

若已执行过该命令但问题仍存在,可单独生成Personal Access Client:

php artisan passport:client --personal

执行后按提示输入客户端名称(例如Personal Access Client)即可。

2. 验证环境变量配置

检查项目根目录的.env文件,确认存在以下两个环境变量(执行上述命令后会自动生成):

PASSPORT_PERSONAL_ACCESS_CLIENT_ID=your-client-id
PASSPORT_PERSONAL_ACCESS_CLIENT_SECRET=your-client-secret

若不存在,可从数据库的oauth_clients表中找到personal_access_client字段值为1的记录,将其id和secret分别填入上述变量。

3. 确保模型正确引入Passport Trait

检查Artist模型,确认已引入HasApiTokens trait:

<?php

namespace App\Models;

use Laravel\Passport\HasApiTokens;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class Artist extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;

    // ... 模型其他配置与属性
}

4. 清理缓存

执行以下命令清除配置与缓存,确保新配置生效:

php artisan config:clear
php artisan cache:clear

排查辅助步骤

  • 查看数据库oauth_clients表,确认存在personal_access_client = 1的记录,若不存在则说明Passport初始化未完成,需重新执行安装命令。
  • 确认AuthenticationController中createToken的调用逻辑正确(你的代码中该部分逻辑无问题)。

内容的提问来源于stack exchange,提问作者Henrique Guimarães

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:22:03