登录
首页 >  文章 >  php教程

LaravelJetstream怎么用_LaravelJetstream全栈认证方案【推荐】

时间:2026-05-04 15:54:53 291浏览 收藏

小伙伴们有没有觉得学习文章很有意思?有意思就对了!今天就给大家带来《LaravelJetstream怎么用_LaravelJetstream全栈认证方案【推荐】》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

Jetstream 非开箱即用黑盒,需手动确认配置、执行迁移、理解其与 Sanctum 的耦合关系:jetstream:install 仅生成代码,必须运行 php artisan migrate 创建 teams、personal_access_tokens 等表;config/jetstream.php 中 features 需显式启用双因素、团队、API 等功能并清缓存;Sanctum 配置须手动发布且正确设置 SANCTUM_STATEFUL_DOMAINS;团队与 API token 权限默认解耦,需自行实现作用域过滤。

LaravelJetstream怎么用_LaravelJetstream全栈认证方案【推荐】

Jetstream 不是“装完就能用”的黑盒,它默认启用一堆功能但不会自动暴露所有入口;你得手动确认配置、补全迁移、并理解它和 Sanctum 的耦合关系——否则登录页能进,API 认证会静默失败。

jetstream:install 命令执行后必须立刻跑 migrate

Jetstream 的 php artisan jetstream:install livewirephp artisan jetstream:install inertia 只生成代码和配置,不执行数据库变更。它依赖的表(比如 teamsuser_teamspersonal_access_tokens)不会自动创建。

  • 漏掉 php artisan migrate → 注册时抛出 SQLSTATE[42S02]: Base table or view not found
  • 如果已运行过迁移但没清缓存,可能因旧 migration 缓存导致字段缺失(如 two_factor_secret 字段为空)
  • Livewire 版本还需确保 npm install && npm run build 成功,否则 resources/js/Pages/Auth/Login.vue(Inertia)或 resources/views/auth/login.blade.php(Livewire)里的组件无法渲染

config/jetstream.php 里 features 必须显式开启所需功能

Jetstream 默认只启用基础认证(注册/登录),双因素、团队、API Token 等全靠 config/jetstream.php'features' 数组控制。不配就等于没开,前端按钮和后端逻辑都不会加载。

  • Features::twoFactorAuthentication() 不加 → 用户看不到「启用双重验证」按钮,two_factor_secret 字段也不会被写入
  • Features::teams() 不加 → 即使数据库有 teams 表,TeamController 路由和权限策略也完全不注册
  • 修改后必须运行 php artisan config:clear,否则缓存会导致新配置不生效

API 认证依赖 Sanctum,但 Jetstream 不自动发布 Sanctum 配置

Jetstream 内置了 Sanctum 支持,但它只安装包、注册服务提供者,不发布 config/sanctum.php。这意味着跨域请求(比如 Vue 前端调用 /api/user)大概率 401,且错误信息极不明确。

  • 必须手动运行 php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
  • 检查 .envSANCTUM_STATEFUL_DOMAINS 是否包含你的前端域名(如 localhost:5173myapp.test
  • Inertia 用户还要确认 app/Http/Middleware/HandleInertiaRequests.php 里是否已添加 'X-XSRF-TOKEN'share(),否则 XSRF 校验失败

二因素认证启用后,密码确认中间件会拦截敏感操作

Jetstream 启用 Features::twoFactorAuthentication() 后,所有涉及密钥变更的操作(如禁用 2FA、重置恢复码)都会触发 ConfirmsPassword 中间件。它不是弹窗提示,而是直接跳转到 /user/confirm-password 页面等待用户重新输入密码。

  • 这个页面默认存在,但如果你删过 resources/views/auth/confirm-password.blade.php 或覆盖了 ConfirmablePasswordResponse,就会 404
  • Livewire 版本中,ConfirmablePasswordResponse 类在 vendor/laravel/jetstream/src/Actions/ConfirmablePasswordResponse.php,别误删
  • 若想跳过该确认(仅限开发环境),可临时注释 app/Providers/JetstreamServiceProvider.php 中对 ConfirmsPassword 的注册

最常被忽略的是:Jetstream 的团队功能与 Sanctum 的 API token 权限模型是解耦的——你开了 Features::teams(),不代表 API token 自动绑定到当前团队。需要自己在 App\Models\Token 或中间件里做 scope 过滤,否则一个 token 可能跨团队读写数据。

到这里,我们也就讲完了《LaravelJetstream怎么用_LaravelJetstream全栈认证方案【推荐】》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>