web-dev-qa-db-ja.com

Laravel 5.0?)でAuth :: attemptを使用してパスワードなしでログインする方法

Laravel 5.0を使用しています。シングルサインオンを使用してLaravelプロジェクト、したがって、ユーザーがシングルサインオンでログインに成功すると、ログインしたユーザーのユーザー名が登録されているかどうかがデータベースにチェックされます。
私はこれを一日中探していますが、それでも手がかりを見つけました。

エラーが発生しました:

Illuminate\Auth\Guard :: login()に渡される引数1は、インターフェイスIlluminate\Contracts\Auth\Authenticatableを実装する必要があります。nullが指定されます

loginControllerで以下のコードを使用している場合:

$user = User::where('USER_NAME', '=', $_GET['UserName'])->first();
if(Auth::login($user)->USER_ID == $_GET['UserName']){
   return redirect('Home');
}

そして、LoginControllerで以下のコードを使用している場合:

if(Auth::attempt(['USER_ID' => $_GET['UserName']])){
   return redirect('Home');
}

エラーが発生しました:

未定義のインデックス:パスワード

9
hendraspt

ドキュメントによると:

ユーザーはemail列の値によって取得されます。ユーザーが見つかった場合、データベースに保存されているハッシュされたパスワードが、配列を介してメソッドに渡されたハッシュされたパスワードの値と比較されます。

したがって、このメソッドではパスワードをチェックする必要があるため、これは必須パラメーターです。

次のようにログインできます。

$user = User::where('USER_NAME', '=', $_GET['UserName'])->first();

if (empty($user)) {
    abort(404);
}

if(Auth::loginUsingId($user->id)){
    return redirect('Home');
}
4
Sovon

電子メールのみで手動でユーザーを認証できます。このような:

  public function authenticate(Request $request)
     {
               $email=$request->get('email');
               if (Auth::attempt(['email' => $email))
                {     
                    return redirect()->intended('/');   
                }
                else 
                {
                    return redirect('/login');
                }

    }
1
Sanzeeb Aryal