laravel 8+ 废弃 make:auth,须用 breeze(轻量 blade)、jetstream(livewire/inertia)或 fortify(无视图 api 向);breeze 需 npm 构建,jetstream 需选技术栈并清理冗余代码,fortify 需手动发布配置并定制认证逻辑,且三者均需正确配置 auth.php guards。

php artisan make:auth 已被弃用,Laravel 8+ 项目中直接运行会报错:`Command "make:auth" is not defined.`。必须改用官方推荐的入门套件(Breeze/Jetstream/Fortify)或手动配置。
用 Breeze 快速跑通 Blade 认证流程
适合只需要登录、注册、密码重置的中小型项目,不依赖前端框架。
- 执行
composer require laravel/breeze --dev,再运行php artisan breeze:install—— 它会生成 Blade 视图、路由、控制器和迁移文件 - 务必执行
npm install && npm run build,否则 CSS/JS 加载失败,表单提交无响应 -
php artisan migrate前确认数据库已配置,且users.password字段长度 ≥60,users.remember_token字段为nullable、长度 100 - 默认登录页是
/login,但路由由 Breeze 自动注册,无需手动在routes/web.php中添加
Jetstream 选 Livewire 还是 Inertia?
两者都支持团队管理、2FA、API Token,但技术栈差异大,影响后续开发节奏。
- Livewire 更接近传统 Laravel 开发体验:PHP 主导、服务端渲染、无需单独启动前端 dev server;适合已有 Blade 经验、不想引入 Vue/React 的团队
- Inertia 需要额外配 Vue 或 React,前端资源走 Vite 构建,
npm run dev必须常驻;适合已有前端工程化能力、或计划做 SPA 的项目 - 执行
php artisan jetstream:install livewire后,App\Models\User会自动实现HasTeamstrait,但若不需要团队功能,得手动删掉相关 migration 和视图片段,否则php artisan migrate会失败
Fortify 为什么“没视图却最难调”
它只提供认证端点(如 /login POST 接口),不附带任何前端代码,适合 API 项目或完全自定义 UI 场景。
- 安装后必须运行
php artisan vendor:publish --provider="Laravel\Fortify\FortifyServiceProvider",否则config/fortify.php不会出现,Features::registration()等开关无法启用 - 默认不启用注册,需手动在
config/fortify.php的'features'数组里加入Features::registration() - 登录逻辑不可直接覆盖
LoginController,而要在app/Providers/FortifyServiceProvider.php的boot()方法中调用Fortify::authenticateUsing(),否则自定义邮箱/手机号双字段登录会无效 - Fortify 不处理 session 或 cookie 设置,若搭配 API + SPA 使用,需额外配 Sanctum 或手动 set-cookie 头
别忽略 auth.php 和 guards 的实际影响
多数人改完 Breeze/Jetstream 就以为万事大吉,但真正上线后登录态丢失、跨设备登出失效等问题,往往出在 config/auth.php 的 guard 配置上。
- 默认
'web'guard 使用sessiondriver 和eloquentprovider,但如果改过'table'名或'model'路径,Auth::guard('web')->user()会返回 null -
'remember' => true在config/auth.php中默认开启,但若 nginx 或 CDN 缓存了带Set-Cookie的响应,会导致 remember_token 泄露或失效 - 多 guard 场景(如 admin/user 分离)下,
Auth::shouldUse('admin')必须在中间件或控制器开头显式调用,不能依赖路由前缀自动切换











