Usuario:ManuelRomero/Laravel/autentificacion/introduccion

De WikiEducator
Saltar a: navegación, buscar



Concepto

  • La autentificación es otra de las muchas tareas comunes en cualquier aplicación que en el fondo no es parte de la aplicación sino un nivel de seguridad o compromiso que nuestra app pretende adoptar.
  • Laravel gestiona la autentificación en varios ficheros según vamos a ver a continuación
  • La idea es usar un milddeware, entendido como un software intermedio entre la página que solicito y la que el servidor me entrega
  • Anteriormente este concepto se conocía como filtro, ahora en esta versión se conoce como Middleware.
  • La idea es antes de cargar una página que se solicita ver si el usuario está autentificado
Si lo está le entrego la página solicitada
Si no lo está le redirijo a una página de logueo para que se acredite o registre
Cuando lo halga le doy paso a la página inicial
En caso de no hacerlo le doy una información de error.
 /config/auth.php
  • Un listado de este fichero por defecto
?php
return array(
 
	// Supported: "database", "eloquent"
	'driver' => 'eloquent',
 
	'model' => 'User',
 
	'table' => 'users',
 
	'reminder' => array(
 
		'email' => 'emails.auth.reminder',
 
		'table' => 'password_reminders',
 
		'expire' => 60,
 
	),
 
);

Gestionar los datos de la autentificacion

  • Por defecto tenemos un modelo llamado User con su tabla por defecto users
  • Esa tabla logicamente hay que construirla. Podemos hacerlo con migraciones.

Entre otros campos debe contener

  • campo remenber_token de 100 caracteres, permitiendo el valor nulo. Campo usado para recordar entre sesiones
  • Para incluir este campo con migraciones usaremos
$table->rememberToken()
  • Para gestionar la validación Laravel incluye el modelo app/User.php

Gestión de contraseñas

make crear una contraseña

Hash::make('secret');

check validar una contraseña

Hash::check('secret',$hashedPassword);

Tengo que volver a hacer el hash de una contraseña

if (Hash::needsRehash($hashed)) {

   $hashed = Hash::make('secret');

}