vistas usar plantillas plantilla para gratis ejemplo descargar bootstrap laravel laravel-4 eloquent

usar - Laravel selecciona dónde y dónde condición



usar blade sin laravel (6)

Tengo esta consulta básica que quiero realizar pero sigue apareciendo un error. Probablemente debido a mi novedad a laravel.

Aquí está el código:

$userRecord = $this->where(''email'', $email)->where(''password'', $password); echo "first name: " . $userRecord->email;

Estoy intentando que el registro de usuario coincida con las credenciales donde coinciden el correo electrónico y la contraseña. Esto está lanzando un error:

Propiedad no definida: Illuminate / Database / Eloquent / Builder :: $ email

He comprobado el correo electrónico y la contraseña que se están pasando a la función, y están guardando valores. ¿Cuál es el problema aquí?

Gracias,


Después de leer sus comentarios anteriores, está claro que no entendió la función Hash :: make. Hash :: make usa bcrypt hashing. Por diseño, esto significa que cada vez que ejecute Hash :: make (''contraseña''), el resultado será diferente (debido a la formación de salting al azar). Es por eso que no puede verificar la contraseña simplemente verificando la contraseña con hash contra la entrada con hash.

La forma correcta de validar un hash es usando:

Hash::check($passwordToCheck, $hashedPassword);

Entonces, por ejemplo, su función de inicio de sesión se implementaría así:

public static function login($email, $password) { $user = User::whereEmail($email)->first(); if ( !$user ) return null; //check if user exists if ( Hash::check($password, $user->password) ) { return $user; } else return null; }

Y entonces lo llamarías así:

$user = User::login(''[email protected]'', ''password''); if ( !$user ) echo "Invalid credentials."; else echo "First name: $user->firstName";

Recomiendo revisar la documentación de seguridad de Laravel , ya que las funciones ya existen en Laravel para realizar este tipo de autorización.

Además, si su algoritmo de hash hecho a medida genera el mismo hash cada vez para una entrada dada, es un riesgo de seguridad. Un buen algoritmo de hash unidireccional debe usar sal salado al azar.


Después de pruebas rigurosas, descubrí que la fuente de mi problema es Hash :: make (''contraseña''). Al parecer esto seguía generando un hash diferente cada vez. ¡Así que reemplacé esto con mi propia función de hashing (escrita previamente en codeigniter) y viola! las cosas funcionaron bien

Gracias de nuevo por ayudar :) Realmente lo aprecio!


El error viene de $userRecord->email . Debe usar los métodos ->get() o ->first() al llamar desde la base de datos, de lo contrario, solo obtendrá el objeto Eloquent/Builder lugar de una Eloquent/Collection

El método ->first() es bastante autoexplicativo, devolverá la primera fila encontrada. ->get() devuelve todas las filas encontradas

$userRecord = Model::where(''email'', ''='', $email)->where(''password'', ''='', $password)->get(); echo "First name: " . $userRecord->email;


$userRecord = $this->where(''email'', $email)->where(''password'', $password)->first(); usar first() u get() para obtener los resultados $userRecord = $this->where(''email'', $email)->where(''password'', $password)->first(); . Lo más probable es que necesite usar first() ya que solo quiere que se devuelva un resultado. Si no se encuentra el registro se devolverá null . Si está creando esta consulta desde una clase de Eloquent, puede usar self por ejemplo $userRecord = self::where(''email'', $email)->where(''password'', $password)->first();

Más información here


$this->where(''email'', $email)->where(''password'', $password)

está devolviendo un objeto Builder que podría usar para agregar más donde filtros, etc.

Para obtener el resultado que necesita:

$userRecord = $this->where(''email'', $email)->where(''password'', $password)->first();


$userRecord = Model::where([[''email'',''='',$email],[''password'',''='', $password]])->first();

o

$userRecord = self::where([[''email'',''='',$email],[''password'',''='', $password]])->first();

Creo que esta condición es mejor que 2 donde. Es donde el conjunto de condiciones en conjunto de donde las condiciones;