Laravel 6+ 已移除 php artisan make:auth 命令;Auth::attempt() 登录失败常见原因包括字段不匹配、密码未 bcrypt 加密、User 模型路径配置错误;密码重置需确保 token 有效、邮箱已验证、$fillable 包含 password;Vue 调用登录返回 419 是 CSRF 问题,需正确处理 XSRF-TOKEN 和 session 配置。

直接说结论:Laravel 的 php artisan make:auth 命令在 Laravel 6+ 已被移除,硬套老教程会卡在路由、视图、控制器全报错——不是你配错了,是它根本不存在了。
Auth::attempt() 登录失败但没报错?检查这三处
常见现象是表单提交后页面刷新、无提示、Auth::check() 仍返回 false。本质是认证凭据没被正确传递或比对逻辑被绕过。
-
Auth::attempt()默认只校验email和password字段,如果你的登录字段是username,必须显式传数组:['username' => $request->username, 'password' => $request->password] - 数据库里
password字段必须是bcrypt加密(用Hash::make()存的),明文或 md5 直接静默失败 - Laravel 9+ 默认使用
App\Models\User,如果模型路径改过(比如放在app/Models/Auth/User.php),要在config/auth.php的'providers.users.model'里同步更新
密码重置链接 404 或 token 不匹配
不是邮件发不出,而是 Laravel 的密码重置流程依赖两个关键状态:token 有效性 + 用户邮箱是否已验证(如果启用了 email verification)。
-
ResetPassword::class中的reset()方法默认调用$user->forceFill(...)->save(),若模型有$fillable白名单,password必须在里面,否则静默忽略 - token 有效期由
config/auth.php中的'passwords.users.expire'控制,默认 60 分钟,开发时建议临时设为1方便调试 - 如果用了自定义中间件(比如
verified),重置路由必须从中间件组中排除,否则/reset/{token}会跳转回验证页
Vue 组件里调用 axios.post('/login') 返回 419?
这是 CSRF 验证失败,和前端是否用 Vue 无关,本质是 session 未建立或 token 未携带。
- Laravel 从 7.0 开始默认启用
SameSite=Lax,若前端域名和 API 域名不一致(如localhost:3000调api.test),需在config/session.php中把'same_site'改成null或'None'(后者需配合 HTTPS) - 确保请求头带上了
X-XSRF-TOKEN:Axios 会自动读取XSRF-TOKENcookie 并注入,但前提是首次 GET 请求(比如访问/sanctum/csrf-cookie)已成功执行且 cookie 可写 - 别漏掉
APP_URL和SESSION_DOMAIN环境变量配置,尤其是本地跨域调试时,SESSION_DOMAIN=.test才能让 cookie 在api.test和app.test间共享
最常被忽略的是:Laravel 的认证流程严重依赖 session 驱动和 cookie 设置,任何环节(Nginx 的 proxy_cookie_path、Docker 容器时区、Homestead 的 hosts 解析)出问题,表现都是“看起来什么都没做错,但就是登不上”。先确认 session_start() 是否真触发了,比对着文档改配置更快。










