直接运行 composer require laravel/sanctum 即可安装,但需手动发布迁移、配置 stateful 域名,并对 api 路由使用 sanctum 中间件而非 auth:sanctum。

直接运行 composer require laravel/sanctum 就够了
绝大多数 Laravel 项目(8.0+,且已配置好 APP_KEY)只需一条命令即可完成 Sanctum 安装。它不会自动发布配置或迁移,但会注册服务提供者并启用中间件别名——这是 Laravel 5.5+ 的包自动发现机制在起作用。
常见错误现象:Class 'Laravel\Sanctum\Sanctum' not found,通常不是因为没装,而是项目缓存未刷新或 Composer 自动加载失效。
- 装完立即执行
php artisan config:clear和composer dump-autoload - 确认
config/app.php中没有手动禁用SanctumServiceProvider - 若使用 Laravel 7.x 或更早版本,需手动添加
Laravel\Sanctum\SanctumServiceProvider::class到providers数组
迁移文件必须手动发布和运行
Sanctum 的 personal_access_tokens 表不随 composer require 自动创建。不执行迁移会导致 TokenMismatchException 或 SQLSTATE[42S02]: Base table or view not found 错误。
正确做法是显式发布迁移:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
然后运行:
php artisan migrate
- 该命令只发布
database/migrations/xxxx_xx_xx_xxxxxx_create_personal_access_tokens_table.php,不会覆盖已有迁移 - 如果项目已存在同名迁移(如从旧版升级),
php artisan migrate会跳过,需检查migrations表确认是否已执行 - 生产环境部署时,务必把此迁移纳入 CI/CD 流程,不能仅靠本地执行
API 认证要用 sanctum 中间件,不是 auth:sanctum
很多人在路由中写 middleware => ['auth:sanctum'],结果 API 请求始终 401 —— 这是混淆了 Sanctum 的两种模式。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
Sanctum 提供两种认证方式:SPA(带 session)和 Token(无状态 API)。对纯 API 场景,应使用 sanctum 中间件(即 EnsureFrontendRequestsAreStateful 的反向逻辑),而非 auth:sanctum。
- API 路由(如
api/*)推荐写法:middleware => ['sanctum'] -
auth:sanctum专用于 SPA 路由(如/dashboard),依赖 session + XSRF-TOKEN - 检查
app/Http/Kernel.php中api组是否已包含throttle:api和sanctum,默认 Laravel 9+ 已预设
sanctum.config 的 stateful 域名必须精确匹配前端地址
API 认证失败却无报错?大概率是 config/sanctum.php 中的 'stateful' 配置没对上实际请求来源域名。
这个数组控制哪些域名允许携带 Cookie 发起请求(影响 XSRF-TOKEN 和 session 复用)。开发时常见疏漏:
- 本地前端用
http://localhost:5173,但配置里只写了localhost—— 缺少端口,不匹配 - 线上用了
https://app.example.com,但配置仍是['example.com']—— 子域未显式列出 - 使用 Docker 或 Nginx 反向代理时,
Host头可能被修改,需按实际到达 Laravel 的域名填写
调试建议:在中间件中临时加 dd(request()->getHost(), config('sanctum.stateful')) 看是否命中。
这个配置点没有报错提示,出问题时只会静默拒绝认证,最容易被忽略。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










