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');
}
エラーが発生しました:
未定義のインデックス:パスワード
ドキュメントによると:
ユーザーはemail列の値によって取得されます。ユーザーが見つかった場合、データベースに保存されているハッシュされたパスワードが、配列を介してメソッドに渡されたハッシュされたパスワードの値と比較されます。
したがって、このメソッドではパスワードをチェックする必要があるため、これは必須パラメーターです。
次のようにログインできます。
$user = User::where('USER_NAME', '=', $_GET['UserName'])->first();
if (empty($user)) {
abort(404);
}
if(Auth::loginUsingId($user->id)){
return redirect('Home');
}
電子メールのみで手動でユーザーを認証できます。このような:
public function authenticate(Request $request)
{
$email=$request->get('email');
if (Auth::attempt(['email' => $email))
{
return redirect()->intended('/');
}
else
{
return redirect('/login');
}
}