Laravel登录注册怎么写 Laravel自带登录功能怎么开启 【速成】

7次阅读

laravel 8+ 移除了 php artisan ui 命令,应改用 breeze:执行 composer require laravel/breeze –dev、php artisan breeze:install、npm install && npm run build 及 php artisan migrate;需确保 routes/web.php 包含 auth::routes() 和 home 路由,或修改 logincontroller 的 $redirectto;邮件需配置 mail_mailer=smtp 并清缓存;auth::check() 失败常见于 session 驱动、中间件顺序或 app_key 变更。

Laravel登录注册怎么写 Laravel自带登录功能怎么开启 【速成】

laravel/ui 安装后 php artisan ui vue --auth 报错“Command ‘ui’ not found”

这是 Laravel 8+ 的典型兼容问题:从 8.0 开始,php artisan ui 命令被移除,官方不再内置前端脚手架和 Auth 脚手架命令。强行运行会提示 Command "ui" is not defined

正确路径是换用 Laravel Breeze 或 Jetstream,或者手动实现——但如果你只是想快速跑通登录注册流程,Breeze 是最轻量、最贴近旧 ui --auth 行为的选择:

  • 运行 composer require laravel/breeze --dev
  • 执行 php artisan breeze:install(支持 blade / react / vue,默认 Blade)
  • npm install && npm run build,再 php artisan migrate

注意:breeze:install 不会覆盖已有 routes/web.php,它只追加 Auth::routes();如果之前手动删过这行,得补上。

注册成功跳转到 /home,但页面 404 或提示 “Route [home] not defined”

这是因为 Laravel 默认的认证后跳转路径依赖一个叫 home 的命名路由,而 Breeze 或手动安装后,这个路由往往没配或指向了不存在的控制器方法。

检查 routes/web.php 是否有类似这行:

Route::get('/home', [ApphttpControllersHomeController::class, 'index'])->name('home');

如果没有,要么补上(确保 HomeController 存在且有 index 方法),要么更推荐的方式是直接改跳转目标:

  • app/Http/Controllers/Auth/LoginController.php 中修改 $redirectTo 属性,比如设为 '/dashboard'
  • 或重写 authenticated() 方法,返回自定义响应(适合需要鉴权判断后再跳转的场景)
  • 别碰 RedirectIfAuthenticated 中间件里的硬编码 /home,那是守门员,不是终点站

密码重置邮件发不出,本地开发用 Mailtrap 仍收不到

常见现象是点击“忘记密码”后页面无报错、无跳转,日志里也看不到发送记录——大概率是邮箱驱动没切到 smtp,或者 .env 配置项没生效。

确认三件事:

  • MAIL_MAILER 必须设为 smtp(不是 logArray),Laravel 7+ 已弃用 MAIL_DRIVER
  • Mailtrap 的 MAIL_HOSTMAIL_PORTMAIL_USERNAMEMAIL_PASSWORD 要严格对应其 dashboard 提供的凭证(注意端口是 2525 还是 587)
  • 执行 php artisan config:clear,避免配置缓存导致 .env 修改不生效

临时验证是否通:在 Tinker 里跑 Mail::raw('test', function ($m) { $m->to('your@xxx.com'); });,比点页面更快定位是逻辑问题还是通道问题。

用户登录后 Auth::check() 返回 false,但 session()->has('login_id') 却有值

说明 Session 写进去了,但认证守卫没读到——最常见原因是 Session 驱动配置或中间件顺序错乱。

重点查这几个位置:

  • config/session.phpdriver 设为 filedatabase,别用 array(仅测试用,不持久)
  • app/Http/Kernel.php$middlewareGroups['web'] 必须包含 IlluminateSessionMiddlewareStartSession::class,且它得在 IlluminateAuthMiddlewareAuthenticate::class 之前
  • 检查路由是否真的套在 web 中间件组里,比如 Route::middleware('web')→group(...) 漏写了,会导致 Session 不启动

还有一种隐蔽情况:APP_KEY 被改过,导致 Session 解密失败,所有已存 session 都失效。这时清空 storage/framework/sessions/ 并重启请求即可验证。

登录态这种事,靠 Auth::check() 判断才可靠,别自己读 session key——守卫封装了 guard、provider、user resolver 全链路,绕过去等于拆掉保险栓。

text=ZqhQzanResources