La primera vez que creé una aplicación web en Laravel, ahora estoy trabajando en su aplicación móvil con el trabajo de Ionic Frame.

Mientras trabaja con laravel, laravel convierte la contraseña a su encriptación. Ahora, mientras trabajo en la integración de API en Ionic con Laravel, con la funcionalidad de inicio de sesión me enfrento a un problema que, ¿cómo puedo comparar la contraseña ingresada a través de la aplicación móvil con la contraseña cifrada en la tabla laravel.

Si hubiera sido una aplicación web, está funcionando bien, pero para la integración de API estoy enfrentando este problema. Por favor, ayúdame

7
Mohammed 22 jun. 2017 a las 12:56

3 respuestas

La mejor respuesta

2 maneras:

1.

$hashedPassword = User::find(1)->password;

if (Hash::check('plain-text-password', $hashedPassword)) {
    // The passwords match...
}

2.

$hashedPassword = User::find(1)->password;

if (Hash::make('plain-text-password') === $hashedPassword) {
  // The passwords match...
}

Sin embargo, como dice la documentación oficial, y como un enfoque pro-DRY (no te repitas), si estás usando el LoginController incluido con Laravel, probablemente no necesites usar estas 2 formas directamente, como ya lo hace automáticamente de la primera manera.

Ref: https://laravel.com/docs/5.4/hashing

ACTUALIZACIÓN IMPORTANTE

La segunda forma publicada aquí no funciona porque Laravel genera sal aleatoria en cada función hash; haciendo que cada hash sea diferente de la contraseña hash original en la base de datos como medida de seguridad adicional. Use la primera forma en su lugar.

17
doncadavona 28 jun. 2017 a las 02:18

Hash :: check es el mejor método para hacerlo.

if(Hash::check('plain password', 'encrypted password')){
    //enter your code
}
3
Naveen Gupta 22 jun. 2017 a las 10:48

Compare con el resultado de password_hash ('rasmuslerdorf', PASSWORD_DEFAULT). "\ n";

0
rya 22 jun. 2017 a las 10:00