2017-06-01 91 views
0

我已经使用Laravel 5.4为注册过程添加了电子邮件验证。我也使用内置的Auth配置。我想现在添加一个“验证过的”参数给认证过程。这用于在5.x的早期版本中工作,但我现在无法使其工作。Laravel 5.4额外的Auth参数

编辑这个文件:

project\vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php

我通常会添加登录验证的 “验证” 部分。

protected function validateLogin(Request $request) 
{ 
    $this->validate($request, [ 
     $this->loginUsername() => 'required', 
        'password' => 'required', 
        'verified' => 1, 
    ]); 
} 

这似乎不工作在5.4现在。我可以在未经验证的情况下登录为真。有没有另外一种方法可以改变这种情况而不触及任何后端类或特征?我可以在LoginController中执行此操作,而不是在Laravel升级过程中保持更容易吗?

回答

1

是的,你可以做到这一点。添加到您的LoginController

use Illuminate\Http\Request; 

protected function credentials(Request $request) 
{ 
    return array_merge($request->only($this->username(), 'password'), ['verified' => 1]); 
} 

从未修改的核心文件。您始终可以覆盖控制器中的核心类方法。

+0

这是有效的。我在哪里可以找到用于添加这些功能的Laravel文档? – hiddenicon

+0

没有任何。您只需探索auth控制器中使用的特征。这些特性只是为了减少控制器的大小,并将大部分逻辑移至核心框架。 – Sandeesh

+0

与上面的凭证方法保持一致,我怎么能告诉哪个部分特别是验证部分失败?有没有抛出异常?我可以用try/catch包装吗? – hiddenicon