需在 User 模型中引入 Laravel\Sanctum\HasApiTokens trait 并使用,确保已安装并发布 Sanctum 配置及迁移,之后方可调用 createToken()、tokens、currentAccessToken() 等方法实现 API token 认证。

在 Laravel 中,要给 User 模型添加 API Token 支持(即使用 Sanctum 或 Passport 的令牌认证),需根据你使用的认证方案来决定具体操作。最常见的是 Laravel Sanctum,它默认通过 HasApiTokens trait 提供 token 管理能力。
确认你用的是 Laravel Sanctum
从 Laravel 8 开始,Sanctum 已作为默认的 API 认证方案集成。如果你尚未安装 Sanctum,请先执行:
composer require laravel/sanctumphp artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"php artisan migrate
在 User 模型中引入 HasApiTokens
打开 app/Models/User.php(或旧版本中的 app/User.php),确保满足以下三点:
大模型 Token 成本节约工具。在请求到达大模型之前自动压缩 prompt 和上下文,减少 60-95% 的 token 消耗,直接降低 API 成本。支持 Claude/OpenAI/Gemini 等主流模型,提供代理模式、CLI 包装、Python SDK 和 MCP Server 四种接入方式。内置一键安...
- 导入命名空间:
use Laravel\Sanctum\HasApiTokens; - 在
User类中使用该 trait:use HasApiTokens; - 确保模型已实现
Authenticatable接口(Laravel 默认已做)
完整示例片段:
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
}
验证是否生效
添加后,你就可以在控制器中为用户创建、管理 token:
-
$user->createToken('token-name')->plainTextToken—— 创建并获取明文 token -
$user->tokens—— 获取该用户所有 token 集合(Eloquent 关系) -
$user->currentAccessToken()—— 获取当前请求中正在使用的 token(需配合 Sanctum 中间件)
注意:这些方法仅在模型使用了 HasApiTokens 后才可用。
常见误区提醒
- 不要混淆 Sanctum 和 Passport:
HasApiTokens是 Sanctum 提供的,Passport 使用的是HasApiTokens的不同实现(实际是Laravel\Passport\HasApiTokens),两者不能混用 - 若使用 Sanctum,请确保路由加了
middleware('auth:sanctum'),否则 token 不会被识别 - 前端请求需携带
Authorization: Bearer {token}头,且 token 必须是 plainTextToken 值(创建时返回的那个)

















