Laravel登录控制器密码错误提示不显示问题求助
Laravel自定义登录控制器错误提示不显示问题修复
问题分析
你自定义的LoginController中,密码错误时通过with('error', ...)闪存了错误消息,但提示无法显示,核心原因有两点:
- 前端视图未正确读取Session中的错误消息
- 控制器内的验证自定义消息代码位置错误,完全未生效
解决方案
1. 在登录视图中添加错误消息渲染代码
打开登录页面对应的视图文件(通常为resources/views/auth/login.blade.php),添加以下代码来显示闪存的错误消息:
@if(session('error')) <div class="alert alert-danger"> {{ session('error') }} </div> @endif
2. 修复控制器内的验证消息位置
你控制器中的$messages数组写在return语句之后,永远不会被执行。需要将其作为第三个参数传入validate方法中,让自定义验证消息生效:
修改login方法中的验证代码:
$this->validate($request, [ 'email' => 'required|email', 'password' => 'required|min:8', ], [ 'email.required' => 'Email是必填项', 'email.email' => '邮箱格式无效', 'password.required' => '密码是必填项', 'password.min' => '密码至少需要8个字符', ]);
3. 可选:统一错误提示风格(推荐)
可以改用Laravel自带的withErrors方法传递错误消息,和表单验证错误提示保持一致:
修改控制器中认证失败的分支:
}else{ return redirect()->route('login') ->withErrors(['email' => '邮箱地址和密码错误。']); }
然后在视图中用@error指令渲染:
@error('email') <div class="alert alert-danger">{{ $message }}</div> @enderror
内容的提问来源于stack exchange,提问作者user21100628
相关产品推荐
相关产品推荐

