web-dev-qa-db-fra.com

Laravel fonction de connexion manuelle

J'utilise la fonction de connexion manuelle dans Laravel 5.5. Coincé dans la connexion. Et vérifie tous les (5 pertinents) liens de pile et n'a trouvé aucun indice dessus.

La réussite est une fois que l'utilisateur est enregistré, connectez-vous automatiquement à cet utilisateur.


L'erreur est

"Erreur de type: l'argument 1 transmis à Illuminate\Auth\SessionGuard :: login () doit implémenter l'interface Illuminate\Contracts\Auth\Authenticatable, chaîne donnée, appelée dans Server/vendor/laravel/framework/src/Illuminate/Auth/AuthManager. php en ligne 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);

est-ce que je fais quelque chose de mal. Guidez-moi s'il-vous-plaît.

10
Stack User

La fonction de connexion nécessite un utilisateur de type Authenticatable et vous venez de donner email qui est une chaîne qui explique pourquoi vous obtenez cette erreur, soit utilisez Auth::loginUsingId($id);

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

Ou juste

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

Au lieu de cela

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

Utilisez ceci

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

=> Vous pouvez vous connecter manuellement comme ceci dans laravel

3
parthu gajera

La fonction Auth::login() attend un objet Authenticable. Si vous n'avez pas joué avec la classe User, ce sera ce dont vous avez besoin pour passer.

Auth::login($user, true);

Référence: https://laravel.com/api/5.5/Illuminate/Auth/SessionGuard.html#method_login

1
mbozwood

Utilisez simplement Auth::login($userMail, TRUE); au lieu de Auth::login($userMail->email, TRUE);

Pour plus d'informations, vérifiez: https://laravel.com/api/5.5/Illuminate/Auth/SessionGuard.html#method_login

1
Jonjie

Vous devez passer/renvoyer le $user comme ça

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