2016-06-30 11 views
0

私のアプリは、電子メールとパスワードの組み合わせを使用してログインするために標準Authモジュールを使用しています。Laravel 5.2認証マルチプルフィールド

パスワードを変更して電子メールまたは7桁の固有のコードを入力する必要があります。

Laravelのドキュメントでは、このコードが見つかりました。

if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1])) { 
    // The user is active, not suspended, and exists. 
} 

私は既に適切なコードを含むようにテーブルを変更しましたが、認証の仕方を理解していません。

誰もこのタイプの問題に遭遇しましたか?前もって感謝します。

+0

正規表現を使用して、入力が電子メールかコードかを検出し、次に入力したものに基づいて試行してみます –

答えて

0

私はLaravel Authenticationの 'email'フィールドは単なる文字列であり、電子メールとして(ビューテンプレートフィールドの実装を除いて)そのフィールドに検証を課すものはありません。したがって、フィールドを別の「ユーザー名」フィールドに簡単に置き換えて、作成中に独自の検証を実行することができます。

注認証ページごAuthControllerオーバーライド次のようにgetCredentials方法を(追加)インサイドhttps://laravel.com/docs/5.1/authentication

Note: In these examples, email is not a required option, it is merely used as an example. You should use whatever column name corresponds to a "username" in your database. 
1

からこの抜粋:あなたはあまりにもvalidateLoginをオーバーライドする必要があり、検証のために

protected function getCredentials(Request $request) 
{ 
    $login = filter_var($request->input('login'), FILTER_VALIDATE_EMAIL) ? 'email' : 'digits'; //Change digits to your table column name 
    return [ 
     $login => $request->input('login'), 
     'password' => $request->input('password') //you can add any db field here e.g: "active" => 1 
    ]; 
} 

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

入力をからloginに変更する場合は、を忘れずにご覧ください。

関連する問題