Diferencia entre revisiones de «Usuario:ManuelRomero/Laravel/autentificacion/introduccion»

De WikiEducator
Saltar a: navegación, buscar
Línea 25: Línea 25:
 
;fichero de configuración
 
;fichero de configuración
 
   '''''/config/auth.php'''''
 
   '''''/config/auth.php'''''
*Un listado de este fichero por defecto
+
*Un listado de este fichero por defecto en la versión 5.2.32 (ver fichero en un proyecto para comentarios)
 
<source lang=php>
 
<source lang=php>
 
?php
 
?php
 
return array(
 
return array(
  
// Supported: "database", "eloquent"
+
return [
'driver' => 'eloquent',
+
//Autentificaciones por defecto
  
'model' => 'User',
+
    'defaults' => [
 +
        'guard' => 'web',
 +
        'passwords' => 'users',
 +
    ],
  
'table' => 'users',
+
//Configuración de cada autentificación definida previamente
   
+
    'guards' => [
'reminder' => array(
+
        'web' => [
 +
            'driver' => 'session',
 +
            'provider' => 'users',
 +
        ],
  
'email' => 'emails.auth.reminder',
+
        'api' => [
 +
            'driver' => 'token',
 +
            'provider' => 'users',
 +
        ],
 +
    ],
  
'table' => 'password_reminders',
+
//Almacenamiento de las credenciales para autentificarse
 +
    'providers' => [
 +
        'users' => [
 +
            'driver' => 'eloquent',
 +
            'model' => App\User::class,
 +
        ],
  
'expire' => 60,
+
        // 'users' => [
 +
        //    'driver' => 'database',
 +
        //    'table' => 'users',
 +
        // ],
 +
    ],
 +
//configuración para resetear la password
  
),
+
    'passwords' => [
 +
        'users' => [
 +
            'provider' => 'users',
 +
            'email' => 'auth.emails.password',
 +
            'table' => 'password_resets',
 +
            'expire' => 60,
 +
        ],
 +
    ],
  
);
+
];
 
</source>
 
</source>
 
===Gestionar los datos de la autentificacion===
 
===Gestionar los datos de la autentificacion===

Revisión de 22:04 26 may 2016



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 verifica ver si el usuario está autentificado
  • La descripción algorítmica sería
1.- Si  está registrado  entrego la página solicitada
2.- Si no lo está le redirijo a una página de logueo para que se acredite o registre
2.-1 Cuando lo halga le doy paso a la página solicitada
3.- En caso de no autentificarles le doy una información de error.
  • En Laravel todo está preparado para configurarlo a nuestras necesidades con pocas acciones
fichero de configuración
 /config/auth.php
  • Un listado de este fichero por defecto en la versión 5.2.32 (ver fichero en un proyecto para comentarios)
?php
return array(
 
return [
 //Autentificaciones por defecto
 
    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],
 
//Configuración de cada autentificación definida previamente
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
 
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],
 
//Almacenamiento de las credenciales para autentificarse
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
 
        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],
//configuración para resetear la password
 
    'passwords' => [
        'users' => [
            'provider' => 'users',
            'email' => 'auth.emails.password',
            'table' => 'password_resets',
            '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');

}