如何修改Laravel 5默认的认证系统


How to modify Laravel 5 default authentication system

我使用默认的Laravel 5认证系统。我想简单地添加一个检查,验证用户是否使用学校的电子邮件帐户(我正在为我的大学写这篇文章)。例如,我想确保他们使用的是@harvard.edu,而不是@gmail.com。如果他们没有使用正确的电子邮件类型,我想在$errors变量中添加一个错误,并将其与其他可能的错误一起打印在注册表单上。

看起来实际的验证发生在registry .php中。我假设我将不得不添加一些东西到验证器函数的电子邮件部分。

public function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|confirmed|min:6',
    ]);
}

我感到困惑的另一部分是实际错误消息的位置。

我是Laravel的新手,提前感谢。

要添加自定义验证,可以在http://laravel.com/docs/5.0/validation#custom-validation-rules上阅读文档。例如,在您的例子中:

Validator::extend('email_harvard', function($attribute, $value, $parameters)
{
    $segments = explode("@", $value, 2);
    return end($segments) == "harvard.com";
});

之后,修改您的validator规则,更改行:

'email' => 'required|email|max:255|unique:users',

:

'email' => 'required|email|email_harvard|max:255|unique:users',

关于错误消息,您可以在这里阅读。在Laravel 5中,验证消息位于resources/lang/xx/validation.php,其中xx是语言代码。