it-swarm-pt.tech

Laravel função de login manual

Eu uso a função de login manual em Laravel 5.5.

A conquista é assim que o usuário for registrado, entre automaticamente.


O erro é

"Erro de tipo: o argumento 1 passado para Illuminate\Auth\SessionGuard :: login () deve implementar a interface Illuminate\Contracts\Auth\Authenticatable, sequência fornecida, chamada em Servidor/fornecedor/laravel/framework/src/Illuminate/Auth/AuthManager. php na linha 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);

estou fazendo algo errado. Por favor me guie.

6
Stack User

A função de logon precisa de um usuário do tipo Authenticatable e você acabou de fornecer email, que é a string que é a razão pela qual você recebe esse erro. Use Auth::loginUsingId($id);

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

Ou apenas

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

Em vez disso

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

Usa isto

Auth :: login ($ usuário-> 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);

=> Você pode fazer login manual como este no laravel

3
parthu gajera

A função Auth::login() espera um objeto Authenticable. Se você não mexeu com a classe User, é isso que você precisa passar.

Auth::login($user, true);

Referência: https://laravel.com/api/5.5/Illuminate/Auth/SessionGuard.html#method_login

1
mbozwood

Basta usar Auth::login($userMail, TRUE); em vez de Auth::login($userMail->email, TRUE);

Para obter mais informações, verifique: https://laravel.com/api/5.5/Illuminate/Auth/SessionGuard.html#method_login

1
Jonjie

Você precisa passar/retornar o $user como isso

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