在Laravel中使用Sanctum生成API Token,核心是用户登录后调用$user->createToken()->plainTextToken获取明文token并立即返回;需先完成安装、迁移、模型集成及auth:sanctum中间件配置,数据库仅存哈希值,token默认永不过期。

在 Laravel 中使用 Sanctum 生成 API Token,核心是为用户创建一个可验证的、无状态的令牌,适用于 SPA、移动端或纯 API 场景。它不依赖 session,而是通过数据库存储 token 并校验其有效性。
1. 安装并配置 Sanctum
确保你已安装 Sanctum 并完成基础配置:
- 运行
composer require laravel/sanctum - 执行
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"发布迁移和配置 - 运行
php artisan migrate创建personal_access_tokens表 - 在
app/Providers/AuthServiceProvider.php的boot()方法中确保调用了Sanctum::usePersonalAccessTokenModel(YourTokenModel::class);(默认无需修改) - 在
config/auth.php的guards.api中确认 driver 是sanctum
2. 为用户生成 Personal Access Token
这是最常用的方式,适合后台管理、测试或用户自主创建 token:
- 需用户已登录(即有
$user实例) - 调用
$token = $user->createToken('token-name')->plainTextToken; -
plainTextToken是明文返回的完整 token 字符串(仅首次可用),应立即安全返回给客户端 - 数据库中只保存该 token 的哈希值,原始值不会再次暴露
示例控制器方法:
大模型 Token 成本节约工具。在请求到达大模型之前自动压缩 prompt 和上下文,减少 60-95% 的 token 消耗,直接降低 API 成本。支持 Claude/OpenAI/Gemini 等主流模型,提供代理模式、CLI 包装、Python SDK 和 MCP Server 四种接入方式。内置一键安...
$user = auth()->user();
$token = $user->createToken('my-app-token')->plainTextToken;
return response()->json(['token' => $token]);3. 使用 Token 访问受保护接口
生成后,前端需在请求头中带上 token:
- Header 设置:
Authorization: Bearer {your-token-here} - Laravel 自动通过
auth:sanctum中间件校验 - 路由示例:
Route::get('/user', function (Request $request) { return $request->user(); })->middleware('auth:sanctum'); - 注意:token 默认永不过期,如需过期控制,可在
createToken()传入数组指定expires_at(需自定义模型支持)
4. 管理已生成的 Token
用户可通过模型关系查看、撤销自己的 token:
-
$user->tokens获取所有 active token 记录 -
$user->tokens()->where('name', 'my-app-token')->delete();撤销指定 token -
$user->currentAccessToken()获取当前请求使用的 token 实例(需在中间件之后调用) - 也可调用
$user->tokens()->delete()注销全部 token










