Laravel 11.x 中验证请求头 Token 应优先使用 Sanctum,必须在 api 路由组中使用 auth:sanctum 中间件,请求头格式为 Authorization: Bearer xxx,Token 需通过已登录用户调用 createToken() 生成,且需正确配置 SESSION_DRIVER、SANCTUM_STATEFUL_DOMAINS 及 EnsureFrontendRequestsAreStateful。

在 Laravel 11.x 中,验证请求头 Token 应优先使用 Sanctum(官方推荐),通过标准中间件 + 正确路由分组 + 规范请求格式实现,不建议手写底层 header 解析逻辑。
必须走 api 路由组
auth:sanctum 中间件只在 api 路由组下才启用 token 解析。routes/api.php 中定义的路由自动进入 api 中间件栈;若写在 web.php 里,即使加了 auth:sanctum,也不会校验 Authorization 头。
- ✅ 正确:Route::middleware('auth:sanctum')->get('/user', ...)
- ❌ 错误:在 routes/web.php 里用 Route::middleware('auth:sanctum')
请求头格式要严格合规
前端必须发送形如 Authorization: Bearer xxx 的头,注意 Bearer 后是一个英文空格,不能省略或替换成冒号、等号、制表符。
大模型 Token 成本节约工具。在请求到达大模型之前自动压缩 prompt 和上下文,减少 60-95% 的 token 消耗,直接降低 API 成本。支持 Claude/OpenAI/Gemini 等主流模型,提供代理模式、CLI 包装、Python SDK 和 MCP Server 四种接入方式。内置一键安...
- Axios 示例:
headers: { 'Authorization': `Bearer ${token}` } - Postman 或 curl 需手动检查值是否为
Bearer eyJ0e...,而非Bearer: eyJ0e...或token eyJ0e... - 若 Nginx 环境出现小写 authorization 头,需在配置中加
underscores_in_headers on;
Token 必须由已登录用户生成
Sanctum 不支持“无状态生成 token”,token 必须通过认证后的用户调用 createToken() 创建,且 plainTextToken 只能读取一次。
- 登录接口中:$user = Auth::user(); $token = $user->createToken('api')->plainTextToken;
- 立刻返回:
return response(['token' => $token]); - 数据库中存储的是哈希值,无法反查明文;若二次访问
$token->plainTextToken将为空
避免常见配置陷阱
本地开发跨域时,401 常因 session 未共享而非 token 错误。关键配置缺一不可:
-
.env中设SESSION_DRIVER=cookie(不能是 database/redis) -
SANCTUM_STATEFUL_DOMAINS=localhost:5173(匹配前端地址,多个用逗号分隔) - 前端 fetch/Axios 请求需带
credentials: 'include' - 确保
App\Http\Kernel.php的'api'中间件组包含EnsureFrontendRequestsAreStateful::class










