选 Sanctum 还是 Passport,关键看是否需支持第三方接入:仅自用 SPA/移动 App 用 Sanctum,需微信小程序或合作平台标准 OAuth2 授权才用 Passport。

选 Sanctum 还是 Passport,关键看你的项目要不要支持第三方应用接入、有没有 OAuth2 的实际需求。不需要开放授权给外部系统,就用 Sanctum;需要让微信小程序、合作平台等第三方以标准方式获取用户数据,才值得上 Passport。
看场景:谁在调你的接口
如果你的 API 只供自己开发的 Vue/React 前端、iOS/Android App 使用,所有客户端都可控,那 Sanctum 完全够用。它生成的是简单 Token(比如 1|abc123),存数据库、查库验证,流程干净,没有跳转页、不用 client_id,前端也不用处理授权码交换。
如果要对接微信开放平台、允许合作伙伴用自己的后台系统访问你的用户资料,就得用 Passport。它提供标准 OAuth2 授权码流程,支持 client_secret 签名、JWT 签发、token 刷新、作用域精细控制,还带管理后台页面让用户授权。
看复杂度:你愿不愿意多维护几套表和逻辑
Sanctum 只新增一张 personal_access_tokens 表,迁移一次,加个 trait,写几行中间件就跑起来了。Token 撤销、过期、权限范围(abilities)都内置支持,但不强制加密存储(可选哈希)。
Passport 要建 5 张表(oauth_clients、oauth_access_tokens、oauth_refresh_tokens 等),要配置公私钥、发布密钥文件、处理 JWT 签名验证,还要考虑授权页路由、CSRF 保护、重定向回调地址。它功能全,但每多一个环节,出问题的概率就高一点。
看部署与安全要求
前后端同域部署(比如前端走 https://app.example.com,后端 API 在 https://api.example.com),Sanctum 的 Cookie + CSRF 模式能自动维持登录态,体验接近传统 Web 应用,且比纯 Token 更防 XSS 泄露。
如果 API 面向不可信环境(如公开文档供任意开发者调用),又要求 token 自包含、不查库、支持快速吊销和审计日志,那 Passport 的 JWT + 颁发者签名校验更合适。不过要注意:JWT 主动注销难,得靠黑名单或短有效期弥补。
特殊情况:混合用也行
有些项目内部管理后台用 Sanctum,对外开放 API 接口用 Passport;或者主站用 Sanctum,SaaS 子产品线用 Passport 做租户隔离。Laravel 支持多个 guard 并存,auth:sanctum 和 auth:passport 中间件可以按路由分开配置,互不干扰。
别为了“以后可能要用”提前上 Passport。90% 的中小项目根本用不到它的 OAuth2 流程,硬上只会拖慢迭代、增加维护成本。


















