it-swarm.com.de

Laravel manuelle Login-Funktion

Ich verwende die manuelle Anmeldefunktion in Laravel 5.5. Eingeloggt bleiben. und überprüfe alle (5 relevanten) Stack-Links und finde keinen Hinweis darauf.

Erfolg ist Sobald Benutzer registriert sind, melden Sie sich automatisch an diesem Benutzer.


Fehler ist

"Tippfehler: Argument 1, das an Illuminate\Auth\SessionGuard :: login () übergeben wird, muss die Schnittstelle Illuminate\Contracts\Auth\Authenticatable implementieren. Die angegebene Zeichenfolge wird in Server/Anbieter/Laravel/Framework/Src/Illuminate/Auth/AuthManager aufgerufen. PHP auf der Linie 294 ◀ "

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

mache ich etwas falsch? Bitte führen Sie mich.

3
Stack User

Für die Anmeldefunktion ist ein Benutzer vom Typ Authenticatable erforderlich, und Sie haben gerade email angegeben. Dies ist eine Zeichenfolge, aufgrund derer Sie diese Fehlermeldung erhalten. Verwenden Sie entweder Auth::loginUsingId($id);

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

Oder nur

Auth::login($user);
11
Niklesh Raut

An Stelle von

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

Benutze das

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

2
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);

=> Sie können sich wie folgt manuell in laravel einloggen

2
parthu gajera

Die Funktion Auth::login() erwartet ein authentifizierbares Objekt. Wenn Sie sich nicht mit der Klasse User angelegt haben, müssen Sie diese weitergeben.

Auth::login($user, true);

Referenz: https://laravel.com/api/5.5/Illuminate/Auth/SessionGuard.html#method_login

1
mbozwood

Benutze einfach Auth::login($userMail, TRUE); anstelle von Auth::login($userMail->email, TRUE);

Weitere Informationen finden Sie unter: https://laravel.com/api/5.5/Illuminate/Auth/SessionGuard.html#method_login

1
Jonjie

Sie müssen den $user so übergeben/zurücksenden

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