Diferencia entre revisiones de «Usuario:ManuelRomero/Laravel/autentificacion/introduccion»
(→Activando la autentificación por defecto de laravel) |
|||
Línea 118: | Línea 118: | ||
Lógica para controlar resetear una password | Lógica para controlar resetear una password | ||
}} | }} | ||
− | + | {{Tip|En muchos casos, activar la autentificación por defecto es suficiente, pero conviene conocer cómo modificar determinados comportamientos por defecto}} | |
− | {{ | + | {{MRM_Actividad|Ttitle=Personalizando la autentificación| |
+ | #Página inicial una vez logueado. | ||
+ | #Campos para validar al ususario. | ||
+ | #Protegiendo rutas. | ||
+ | }} | ||
+ | ===Página inicial=== | ||
+ | <br /> | ||
+ | {{MRM_Puntos clave|Title=Página a redirigir una vez logueado| | ||
;Atributo | ;Atributo | ||
<source lang=php> | <source lang=php> | ||
Línea 137: | Línea 144: | ||
</source> | </source> | ||
{{Tip|El método tiene preferencia sobre el atributo}} | {{Tip|El método tiene preferencia sobre el atributo}} | ||
− | + | }} | |
− | * | + | ===Protegiendo rutas=== |
− | * | + | *Establecer páginas o rutas, que solo se sirven si se está logueado. |
+ | *Si tengo una ruta de una página | ||
+ | <source lang=php> | ||
+ | Route::get('/productos', 'ControladorProductos@get') | ||
+ | </source> | ||
+ | *Si la quiero proteger con autentificación: | ||
+ | <source lang=php> | ||
+ | Route::get('/productos', 'ControladorProductos@get')->middleware('auth'); | ||
+ | </source> | ||
+ | |||
+ | |||
+ | |||
+ | <br /> | ||
+ | |||
+ | |||
+ | |||
Revisión de 09:29 5 jun 2017
Como ver el tema de puertos nmap localhost
El resultado sera una lista con los puertos que tienes abiertos, los protocolos que utilizan y los servicios que están corriendo en este momento.
Para cerrar algún puerto solo es necesario ejecutar una linea como la siguiente en una terminal:
fuser -k 80/tcp -->
Conceptos generales
- 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.
- Laravel nos ofrece la autentificación como un servicio.
- Laravel tiene preconfigurada la autentificación la cual la podemos activar de manera sencilla.
Autentificación implementada en Laravel
- 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)
config.php |
---|
?php return array( return [ //Autentificaciones por defecto 'defaults' => [ 'guard' => 'web', 'passwords' => 'users', ], //Configuración de guards *cómo los usuario se autentifican en cada solicitud* 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', ], ], 7 //Configuración de providers *como los usuario recuperar su almacenamiento permanente e.d donde está almacenadas las credenciales para verificar la autentificación*/ '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, ], ], ]; |
Como podemos ver la autentificación en Laravel está configurada por dos elementos que podemos modificar: Guards y Providers.
|
Activando la autentificación por defecto de laravel
Usamos la línea de comandos con artisan, creamos el módulo auth en nuestra aplicación
{23:44}~ ➭ php artisan make:auth Authentication scaffolding generated successfully. {0:29}~ ➭
//... Auth::routes(); Route::get('/home', 'HomeController@index'); //...
|
Registro del usuarios
Gestiona la autentificación.
Gestión de una password olvidada por parte de un usuario
Lógica para controlar resetear una password
|
Página inicial
protected redirectTo='/home'; De los controladores:
Se puede especificar también el método protected function redirectTo() { return '/path'; } Tip: El método tiene preferencia sobre el atributo
|
Protegiendo rutas
- Establecer páginas o rutas, que solo se sirven si se está logueado.
- Si tengo una ruta de una página
Route::get('/productos', 'ControladorProductos@get')
- Si la quiero proteger con autentificación:
Route::get('/productos', 'ControladorProductos@get')->middleware('auth');
public function username(){ return ("name"); //Ahora será este el campo por el que se validará } :2.-Actualiza la plantilla correspondiente
|
- La idea es usar un milddeware, entendido como un software intermedio entre la página que solicito y la que el servidor me entrega
- De esta forma siempre que solicite una página que necesite estar registrado, antes de servirla voy a verificar si estoy o no registrado
- Anteriormente (en veriones 4 o anterior), este concepto se conocía como filtro, ahora en esta versión se conoce como ya hemos comentado 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 haga le doy paso a la página solicitada 3.- En caso de no autentificarse le doy una información de error.
- En Laravel todo está preparado y configurado, para que con unas pequeñas acciones podamos adaptar esa configuración a nuestras necesidades. Bastaría con hacer las siguientes acciones como indican en la página de referencia
php artisan make:auth and php artisan migrate
Entonces acceemos a nuestra app http://localhost:8000/register
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');
}