私はLaravel= 5.5で手動ログイン機能を使用しています。ログインで立ち往生しています。すべてのスタックリンク(5関連)を確認しましたが、手掛かりが見つかりませんでした。
達成はユーザーが登録されると、自動的にそのユーザーにサインインします。
エラーは
「タイプエラー:Illuminate\Auth\SessionGuard :: login()に渡される引数1は、サーバーIlluminate\Contracts\Auth\Authenticatableを実装する必要があります。指定された文字列は、Server/vendor/laravel/framework/src/Illuminate/Auth/AuthManagerで呼び出されます。 294行目のphp◀ "
if ($validator->fails()) {
// $messages = $validator->messages();
return Redirect::to('register')
->withErrors($validator)
->withInput();
} else {
$email = Input::get('email');
$user = new user;
$user->name = Input::get('name');
$user->email = Input::get('email');
$user->password = Hash::make(Input::get('password'));
$user->save();
// $userMail = $user->find($email);
$userMail = User::where('email','=',$email)->first();
Auth::login($userMail->email, TRUE);
私は何か間違ったことをしていますか?案内してください。
ログイン関数にはタイプAuthenticatable
のユーザーが必要で、email
を指定しただけです。これは、このエラーが発生する理由です。Auth::loginUsingId($id);
を使用するか、
$user = User::where('email','=',$email)->first();
Auth::loginUsingId($user->id, TRUE);
あるいは単に
Auth::login($user);
これの代わりに
Auth :: login($ userMail-> email、TRUE);
これを使って
Auth :: login($ user-> id、TRUE);
$email = $request->email;
$password = md5($request->password);
if ($request->remember_me == 1) {
$cookie = Cookie::queue('username', $email, time() + 31536000);
} else {
$cookie = Cookie::queue('username', '', time() - 100);
}
$user = DB::table('tbl_adminuser')->where('email_address', $email)->where('password', $password)->first();
$request->session()->put('userData', $user);
=> laravelでこのように手動でログインできます
Auth::login()
関数には、Authenticableオブジェクトが必要です。 User
クラスをいじっていない場合は、これを渡す必要があります。
Auth::login($user, true);
リファレンス: https://laravel.com/api/5.5/Illuminate/Auth/SessionGuard.html#method_login
Auth::login($userMail, TRUE);
の代わりにAuth::login($userMail->email, TRUE);
を使用するだけです
詳細については、次を確認してください: https://laravel.com/api/5.5/Illuminate/Auth/SessionGuard.html#method_login
このように$user
を渡す/返す必要があります
if ($validator->fails()) {
// $messages = $validator->messages();
return Redirect::to('register')
->withErrors($validator)
->withInput();
} else {
$email = Input::get('email');
$user = new user;
$user->name = Input::get('name');
$user->email = Input::get('email');
$user->password = Hash::make(Input::get('password'));
$user->save();
//
Auth::login($user);
OR
Auth::loginUsingId($user->id, TRUE);