web-dev-qa-db-ja.com

Laravel手動ログイン機能

私は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);

私は何か間違ったことをしていますか?案内してください。

10
Stack User

ログイン関数にはタイプAuthenticatableのユーザーが必要で、emailを指定しただけです。これは、このエラーが発生する理由です。Auth::loginUsingId($id);を使用するか、

 $user = User::where('email','=',$email)->first();
 Auth::loginUsingId($user->id, TRUE);

あるいは単に

Auth::login($user);
20
Rishi Raut

これの代わりに

Auth :: login($ userMail-> email、TRUE);

これを使って

Auth :: login($ user-> id、TRUE);

4
Siva Ganesh
$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でこのように手動でログインできます

3
parthu gajera

Auth::login()関数には、Authenticableオブジェクトが必要です。 Userクラスをいじっていない場合は、これを渡す必要があります。

Auth::login($user, true);

リファレンス: https://laravel.com/api/5.5/Illuminate/Auth/SessionGuard.html#method_login

1
mbozwood

Auth::login($userMail, TRUE);の代わりにAuth::login($userMail->email, TRUE);を使用するだけです

詳細については、次を確認してください: https://laravel.com/api/5.5/Illuminate/Auth/SessionGuard.html#method_login

1
Jonjie

このように$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);
0
Mr. Pyramid