Mostrar las sesiones abiertas por dispositivo y poder cerrarlas desde un panel con Laravel

Desde hace tiempo, me preguntaba cómo se podría hacer con Laravel una sección que tienen muchas webs (por ejemplo, Facebook) que consiste en un listado de todas las sesiones abiertas segun dispositivo de nuestro usuario y poder cerrarlas desde ahí mismo. Estuve investigando  y, en esta entrada, veremos cómo hacer una versión simple de esto. Haremos un listado de las sesiones y añadiremos un botón para eliminar cada sesión y así quedará inválida y, por tanto, el usuario (en ese dispositivo) no seguirá logueado.

Primero de todo vamos a cambiar el driver de sesión en el archivo .env:

Al haber cambiado esto, podremos generar las migraciones, para que nos cree una tabla para guardar las sesiones:

Ejecutamos las migraciones:

Con esto, ya tendremos la tabla donde se guardarán y eliminarán las sesiones.

Ahora vamos al código. Creamos las rutas de listar y eliminar:

También, podríamos poner este código separado en controladores, pero como ejemplo es suficiente.

Creamos la vista para listar las sesiones con el botón para eliminar. Cuando le demos al botón de eliminar, automáticamente la sesión del dispositivo quedará invalida y hará logout:

Quedaría algo así:

-


Aloja tu proyecto en DigitalOcean: Obtén $100 de crédito gratis al registrarte a través de este enlace.

Si hay cualquier tipo de error en el post o te surge cualquier duda, no dudes en ponerlo en los comentarios o enviarme un correo desde la página de contacto.

? CONTACTAR

4 comentarios en “Mostrar las sesiones abiertas por dispositivo y poder cerrarlas desde un panel con Laravel

  1. Excelente trabajo! Muchas gracias por compartirlo.
    Estoy empezando con Laravel7 (disculpa mi ignorancia). Cuando dices:
    php artisan session:table
    ¿Por qué no necesito un modelo?
    ¿Es por la diferencia de versiones y lo mismo que:
    php artisan make:model Session –migration?
    (En otras entradas el encabezado dice Laravel 5, pero en ésta no…) o
    ¿Es que todo eso cambia al configurar .env? (por defecto, SESSION_DRIVER=file
    …………….
    Aprovecho para sugerirte un temazo: cómo escribir los header http en Laravel
    Muchísimas gracias

    1. Hola Amaia! Muchas gracias por tu comentario.

      Sí, como dices, cambia cuando cambiamos el driver en el .env, creamos y ejecutamos las migraciones y Laravel ya gestiona todo lo demás. A partir de aquí, todas las sesiones se guardarán en la tabla sessions de la base de datos.

      Te paso el link de la documentación de Laravel sobre las sesiones para más información: https://laravel.com/docs/7.x/session.

      Por cierto, tomo nota de la sugerencia. Muchas gracias 😀

      Espero que te ayude. Un saludo!

Deja una respuesta

  Acepto la política de privacidad