2017-03-24 24 views
0

私はカスタム認証を使用しています。カスタムプロバイダのretrieveByCredentials機能のユーザステータス(有効/無効)チェックを追加しました。ユーザーが間違った資格情報を入力したかどうか、またはユーザーが無効になっているためにエラーが発生したかどうかを、どのように区別することができますか?Laravel認証エラーメッセージ

今まで私は関数sendFailedLoginResponseに従っていましたが、区別する方法はありません。

どのように私はこれを達成することができますか?

答えて

1

私は、次の方法でこれを近づいてきました:あなたのフィールドの名前と期待値が「アクティブ」のためには何でも出て代入

/* 
    LoginController.php 
*/ 

/** 
* Override default login username to be used by the controller. 
* 
* @return string 
*/ 
public function username() 
{ 
    return 'username'; 
} 

/** 
* Override default validation of the user login request. 
* 
* @param \Illuminate\Http\Request $request 
* 
* @return void 
*/ 
protected function validateLogin(Request $request) 
{ 
    $this->validate($request, [ 
     $this->username() => [ 
      'required', 
      'min:4', 
      'max:30', 
      'regex:/^[\S]*$/', 
      Rule::exists('users')->where(function ($query) 
      { 
       $query->where('active', 1); 
      }) 
     ], 
     'password' => 'required|min:6|max:100' 
    ]); 
} 

は、ユーザーがアクティブであるかどうかに応じて、検証することができます/有効にします。既にこれを行ったことを述べましたが、この場合、検証エラーは「存在」ルールの検証メッセージにもなります。私のアプリケーションでは、実際にユーザーがログインに失敗した理由を気にする必要はありませんが、検証メッセージを確認することで、あなたのケースでは十分であると思いますか?

+0

お返事ありがとうございます。私のアプリケーションの 'user'の詳細は私のデータベースに保存されていません。ユーザーは別のユーザーシステム(内部アプリケーション、他のすべてのアプリケーションで共有)に保存されます。すべてのユーザー関連の操作はAPIを介して行われます。したがって、私は '存在する'ルールを使うことはできません。 –

+0

とにかく、私は 'validateLogin'関数で何かをすることによって考えることができます。 –