Pablo Villalba
Pablo Villalba
Laravel
Comparte:

sessiones

hola jorge como puedo hacer para que un usuario solamente tenga iniciada una session en el sistema,? y cuando otro usuario trate de entrar desde otra ip, le deniegue el permiso de acceso.
Jorge Davila
Jorge Davila (0 xp)
Puedes crear un middleware que se encargue de eso. Necesitarias varias cosas:


-Session por base de datos: https://laravel.com/docs/5.8/session#driver-prerequisites

-Crear un middleware que revise que el usuario solo tenga una session iniciada.

-Middleware priority: https://laravel.com/docs/5.8/middleware#sorting-middleware


Con esto ya podrias jugar bastante con el login. Puedes ya sea verificar antes de que se ejecute el login, o en su defecto despues, depende de como quieras manejar la logica. Esto solo evitaria que un usuario inicie session si ya hay una session iniciada con ese usuario/ip. Si quieres que las cierre al momento tambien necesitarias de sockets aunque seria complicarte bastante la vida por algo que no es tan necesario si no vas a manejar una aplicacion que necesite cumplir con dichos requerimentos.
Pablo Vera
Pablo Vera (0 xp)
Entonces la solucion sería pasar del las sesiones en archivos a las sesiones en base de datos y éstas verificarlas mediante un middleware que se ejecutaría antes del login.
Tienes algun ejemplo de este middleware?