Laravel+Breeze项目错误消息显示异常求助:认证失败仅显示auth.failed
解决Laravel Breeze认证错误消息显示为
auth.failed的问题 首先明确:Breeze并没有单独生成自定义错误消息数组,它直接使用Laravel自带的本地化语言文件管理提示文本。出现auth.failed而非中文提示,大概率是本地化配置或语言文件出了问题,和邮件验证功能关联不大,但也可以排查是否修改了相关配置。
步骤1:检查本地化配置
打开项目根目录的.env文件,确认APP_LOCALE的值为zh-CN(简体中文环境):
APP_LOCALE=zh-CN
如果之前是中文,添加邮件验证后误改为en,就会导致提示显示英文键名。
步骤2:确认中文语言文件存在
Laravel语言文件存放在resources/lang/目录下,检查是否存在zh-CN文件夹,且内部有auth.php文件。如果没有:
- 复制
resources/lang/en/auth.php文件到resources/lang/zh-CN/目录 - 修改
zh-CN/auth.php里的failed键值为目标中文提示:
<?php return [ 'failed' => '您提供的邮箱或密码不匹配。', 'password' => '提供的密码不正确。', 'throttle' => '登录尝试次数过多,请在 :seconds 秒后重试。', ];
步骤3:排查邮件验证相关配置干扰
如果上述步骤未解决问题,检查添加邮件验证时是否修改了以下内容:
- 是否在
config/app.php中修改了locale配置,覆盖了.env的设置 - 是否在登录控制器(
app/Http/Controllers/Auth/AuthenticatedSessionController.php)的store方法中,错误修改了认证失败的提示逻辑,比如把__('auth.failed')改成了直接输出字符串键名
验证修复
修改完成后,清除配置缓存(可选但推荐):
php artisan config:clear
重新尝试登录失败场景,即可正常显示中文提示。
内容的提问来源于stack exchange,提问作者Emilien Charpié
相关产品推荐
相关产品推荐

