登录表单,每个错误都有不同的自定义错误消息

时间:2018-07-10 10:02:04

标签: laravel

我们可以在resources / lang / en.php中更改默认登录错误消息:

<?php

return [
    'failed' => 'These credentials do not match our records.',
    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',

];

但是在登录表单中,如果用户输入了无效的电子邮件,或者不填写电子邮件字段和密码,或者其他任何情况都可能导致错误,则消息始终是相同的:“这些凭据与我们的记录。'

您知道如何针对不同的错误情况使用不同的自定义消息吗?就像如果电子邮件字段是必填字段且未填写一样,该电子邮件格式是否无效或该电子邮件未在系统中注册?

例如,规则如下:

$rules = [
    'email' => 'required|email|exists:users.email'
];

$customMessages = [
    'email.required' => 'The email field is mandatory.',
    'email.email' => 'Introduced email doesnt have a valid format.',
    'email.exists' => 'Introduced email is not registered in the system.',
];


$this->validate($request, $rules, $customMessages);

2 个答案:

答案 0 :(得分:1)

这是故意的行为,因为当电子邮件地址不存在时提供另一个错误是信息泄漏。攻击者可以使用它来查看某个人/电子邮件是否在您的站点上拥有一个帐户,而无需登录。

但是,如果要执行此操作,可以将功能添加到rate-limiting

LoginController

然后,您可以像平常一样访问错误,以在刀片模板IE:protected function validateLogin(Request $request) { $this->validate($request, [ $this->username() => 'required|string|exists:users', 'password' => 'required|string', ],[ $this->username().'.required' => 'You must provide an email address', 'password.required' => 'You must provide a password', ]); }

中进行任何其他表单验证

答案 1 :(得分:0)

我只是在发布是否有人需要的内容。
您可以这样使用:

a = (a.pivot_table(index='Date',columns='Trader',values='EUR')
      .rename_axis(None, axis=1)
      .reset_index())

甚至是这样:

protected function validateLogin(Request $request)
{
    $this->validate($request, [
        'email' => 'required|string|exists:users',
        'password' => 'required|string',
    ],
    [
    'exists' => 'Your custom message',
    'required' => 'Your custom message',
    ]);
}