Saltar al contenido

Evitar que el botón Atrás del navegador inicie sesión después de cerrar sesión en Laravel 5

Revisamos de forma cada post de nuestra página web con la meta de enseñarte siempre información veraz y actualizada.

Solución:

Cree un middleware usando artesano:

php artisan make:middleware RevalidateBackHistory

Dentro del middleware RevalidateBackHistory, establecemos el encabezado en no-cache y revalidamos:

header('Cache-Control','nocache, no-store, max-age=0, must-revalidate')
            ->header('Pragma','no-cache')
            ->header('Expires','Fri, 01 Jan 1990 00:00:00 GMT');
    

Actualice el middleware de ruta de la aplicación en Kernel.php:

protected $routeMiddleware = [
    .
    .
    'revalidate' => AppHttpMiddlewareRevalidateBackHistory::class,
    .
    .
];

¡Y eso es todo! Básicamente, solo necesita llamar al middleware de revalidación para las rutas que requieren autenticación de usuario.

Cuando el usuario hace clic en el botón Atrás, está no en realidad inició sesión, es solo el navegador que representa lo que tiene en caché de vistas de páginas anteriores. El usuario no poder navegar o interactuar con cualquier cosa que requiera que inicien sesión porque, para su aplicación en el servidor, no están autenticados.

Cuando el usuario hace clic en el botón de retroceso no tienes control sobre eso como no hace una solicitud al servidor.

Con el botón Atrás, el único contenido que podrán ver es el que ya han visitado mientras estaban conectados. Si intentan acceder a algo nuevo, realizarán una nueva solicitud a su aplicación, su middleware se activará y redirigirlos a la página de inicio de sesión.

Supongo que si realmente quisiera detener este comportamiento, podría usar JavaScript y demás para enviar una solicitud ajax y verificar si el usuario ha iniciado sesión de esa manera, pero es bastante inútil desde el punto de vista de la seguridad.

Paso 1: cree un middleware usando el siguiente comando:

php artisan make:middleware PreventBackHistory

Paso 2:

reemplace el contenido de PreventBackHistory.php con el siguiente contenido:

header('Cache-Control','no-cache, no-store, max-age=0, must-revalidate')
            ->header('Pragma','no-cache')
            ->header('Expires','Sun, 02 Jan 1990 00:00:00 GMT');
    

paso 3: registra el middleware en kernal.php

'preventBackHistory' => AppHttpMiddlewarePreventBackHistory::class,

Y bueno para ir 🙂

Comentarios y valoraciones

Tienes la opción de estimular nuestra publicación ejecutando un comentario y valorándolo te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *