Protección de Rutas o Vistas mediante Contraseña en Laravel 6.2
En esta página:
Demo Github
Hasta la fecha de este artículo ya se encuentra disponible la versión de Laravel 6 que trae nuevas características que hacen la vida de los Desarrolladores más simple, esto es bueno ya que en la industria actual estas características nos ayudan a concluir un proyecto sea personal o par aun cliente de manera rápida, los clientes no perdonan y quieren que su proyecto se termine lo más antes posible, en este Post te voy a compartir una funcionalidad interesante de Laravel 6
Para este Post exactamente estoy usando la versión de Laravel 6.2 en donde ha incluido una función para proteger una vista por medio de contraseña, esta impide que un usuario acceda a dicha vista sin autorización. Si estas empezando a trabajar con Laravel 6, te recomiendo leer el artículo Las Novedades que trae Laravel 6 y así estés familiarizado con esta versión de Laravel.
Despliegue de Auth Scaffolding de Laravel
Para hacer la protección por contraseña tengo que instalar el Sistema de Login y Registro nativo de Laravel o Auth Scaffolding, yo lo instalaré con Bootstrap ejecutando los siguientes comandos en mi Consola de comandos
1 2 3 4 5 6 7 8 9 |
composer require laravel/ui --dev php artisan ui bootstrap npm install && npm run dev php artisan ui bootstrap --auth |
Paralelamente cuando ejecute los comandos anteriores, Laravel me ha creado unos archivos de migraciones que crean la tabla users en la Base de Datos, para correr o ejecutar estas migraciones ejecuto el siguiente comando
1 2 3 4 5 6 |
php artisan migrate Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table |
Bien con esto ya tengo instalado el Auth Scaffolding de Laravel, me aparecerá en la parte superior derecha los botones para hacer Login o Crear una nueva cuenta (Register)
Procedo a crear una nueva cuenta e inicio sesión en el Sistema, con esto ya tengo una Autenticación activa en el Sistema
Protección de una Ruta o Vista
Supongamos que tengo una Página en donde muestro una imagen que menciona un artículo sobre Las Novedades que trae Laravel 6, a esta Página quiero darle restricción, es decir el usuario que no confirme su contraseña no podrá acceder a esta Página y por ende no podrá ver la imagen.
Para acceder a esta página he creado una ruta en mi archivo web.php que apunta a mi controlador PostresController y al método index
1 2 3 |
Route::get('/articulo', 'PostresController@index'); |
El archivo web.php se encuentra en routes > web.php
Es una ruta sencilla que llama a la vista articulo dentro de mi controlador PostresController , la vista articulo contiene la imagen que menciona un artículo sobre Las Novedades que trae Laravel 6,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class PostresController extends Controller { public function index() { return view('articulo'); } } |
Para que el usuario deba confirmar su contraseña antes de poder ver la Página agrego al final de la ruta el método middleware apuntando a la vista password.confirm
1 2 3 |
Route::get('/articulo', 'PostresController@index')->middleware('password.confirm'); |
Entonces cuando el usuario intenta acceder ala ruta https://localhost:8000/articulo, Laravel lo redirecciona a la ruta https://localhost:8000/password/confirm en donde debe escribir su contraseña para continuar
El tiempo para que Laravel vuelva a pedir la contraseña es de 3 horas, si quieres ampliar el tiempo ve al archivo auth.php que se encuentra en config > auth.php y busca la línea que dice password_timeout y asigna el nuevo tiempo en milisegundos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* |-------------------------------------------------------------------------- | Password Confirmation Timeout |-------------------------------------------------------------------------- | | Here you may define the amount of seconds before a password confirmation | times out and the user is prompted to re-enter their password via the | confirmation screen. By default, the timeout lasts for three hours. | */ 'password_timeout' => 10800, // Acá |
Como puedes haberte dado cuenta, de esta manera protegerás tus aplicaciones Web creadas con Laravel 6.2, Google, GitHub y otras empresas suelen usar la confirmación de contraseña en sus aplicaciones.
Nota (s)
- En futuras versiones el método middleware puede ser modificado, eliminado o continuar, esto no depende de nosotros si no de los Desarrolladores que dan soporte a Laravel.
Síguenos en las Redes Sociales para que no te pierdas nuestros próximos contenidos.
- Laravel
- 28-10-2019
- 28-10-2019
- Crear un Post - Eventos Devs - Foro