直接安装 Sanctum 并配置中间件、用户模型和路由保护即可为 Laravel API 添加 Token 鉴权,关键步骤包括:运行 composer require laravel/sanctum、发布迁移并执行 php artisan migrate、在 User 模型中引入 HasApiTokens trait、在 api.php 中使用 auth:sanctum 中间件保护路由、登录时调用 $user->createToken('api-token')->plainTextToken 返回明文 Token。

直接安装 Sanctum 并配置好中间件、用户模型和路由保护,就能为 Laravel API 接口加上 Token 鉴权。整个流程清晰,重点在迁移、trait 引入和中间件使用三个环节。
安装与发布迁移
在项目根目录运行:
- composer require laravel/sanctum
- php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"(发布配置和迁移)
- php artisan migrate(创建 personal_access_tokens 表)
配置用户模型
打开 app/Models/User.php,确保引入并使用 HasApiTokens trait:
- 添加 use Laravel\Sanctum\HasApiTokens;
- 在 class 定义中加入 use HasApiTokens;
- 该 trait 提供
createToken()、tokens关系等关键方法
设置 API 路由保护
在 routes/api.php 中,用 auth:sanctum 中间件包裹需要鉴权的接口:
- Route::middleware('auth:sanctum')->group(function () { ... });
- 内部路由如
Route::get('/user', fn(Request $r) => $r->user())就自动受保护 - 注意:纯 API 场景(非 SPA)不依赖 Cookie,只认 Authorization: Bearer {token} 请求头
登录接口生成 Token
写一个简单登录逻辑,返回可直接使用的明文 Token:
- 验证账号密码:Auth::attempt($request->only('email', 'password'))
- 获取用户后调用:$user->createToken('api-token')->plainTextToken
- 务必返回
plainTextToken字段,不是整个 Token 对象(避免泄露哈希值)











