Aquí están las fachadas que usé

namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;

He creado con éxito la página de registro de usuario con contraseña hash usando bcrypt.

    //Get singnup view
    public function getSignup() 
    {
        return view('user.signup');
    }
    //Process signup
    public function postSignup(Request $request)
    {
        $this->validate($request, [
            'email' => 'email|required|unique:users',
            'password' => 'required|min:4'
        ]);
        $user = new User([
            'email' => $request->input('email'),
            'password' => bcrypt($request->input('password')),
        ]);
        $user->save();
        return redirect()->route('product.index');
    }

Y ahora estoy atrapado en la página de inicio de sesión. El intento Auth :: siempre devuelve falso. Incluso intenté almacenar una contraseña simple en mi base de datos e iniciar sesión sin bcrypt, pero aún así resultó falso. No tengo idea de dónde estoy equivocado en este momento.

//Get signin view
    public function getSignin() 
    {
        return view('user.signin');
    }
    //Process signin
    public function postSignin(Request $request) 
    {
        $this->validate($request, [
                'email' => 'email|required',
                'password' => 'required|min:4'
                ]);
        $credentials = array(
            'email' => $request->input('email'), 
            'password' => bcrypt($request->input('password'))
                );
        if(Auth::attempt($credentials))
        {
            return redirect()->route('user.profile');
        }
        return redirect()->route('product.index');
    }
0
ImSoDone 2 jun. 2020 a las 07:58

3 respuestas

La mejor respuesta

No necesita bcrypt() en Auth::attempt(). Elimínalo e inténtalo de nuevo.

0
Nguyen Hung Thai 2 jun. 2020 a las 08:07

En config\auth, la configuración del controlador de cambio de guardia está establecida en api.

'defaults' => [
    'guards' => 'api',
    'passwords' => 'users'
]

Pero Laravel no admite la función attempt() con guardia api. Por lo tanto, debe usar algunos paquetes como Passport (Puede hacer referencia aquí )

O más simple, simplemente configure su controlador de guardia con Auth::guard('api')->attempt($credentials)

Espero que esto resuelva tu problema.

0
simpsons3 2 jun. 2020 a las 08:22

¿Puedes intentar eliminar bcrypt() en tus User::create y Auth::attempt()?

Aunque mencionaste que intentaste hacer eso, no estoy seguro de si los has hecho juntos.

0
Edward Chew 2 jun. 2020 a las 05:47