2017-06-01 90 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