Codeigniter - Como podria limitar una sesion por usuario en Codeigniter 3

 
Vista:

Como podria limitar una sesion por usuario en Codeigniter 3

Publicado por Manuel Bravo (1 intervención) el 22/06/2018 22:57:05
Como podria limitar una sesion por usuario en Codeigniter 3
Deseo que un usuario tenga una sola sesion. Ejemplo:

Evitar
Usuario :pepito se loguea en su Lapto
Usuario :pepito se loguea en su Compu
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Limitar una sesión por usuario en CodeIgniter 3

Publicado por Alejandro (44 intervenciones) el 01/09/2023 23:09:15
Para limitar una sesión por usuario en CodeIgniter 3 y evitar que un usuario tenga múltiples sesiones simultáneas, puedes utilizar una estrategia basada en tokens únicos o en una base de datos de sesiones personalizada. Aquí te mostraré cómo implementar la primera opción:

1. Genera un token único para cada usuario al iniciar sesión:

Cuando un usuario inicia sesión, genera un token único y lo asocia con el usuario. Puedes usar una función como `uniqid()` para generar un token único.

1
2
3
// Dentro del controlador de inicio de sesión
$token = uniqid();
$this->session->set_userdata('user_token', $token);

2. Verifica el token en cada solicitud:

En cada solicitud del usuario, verifica si el token almacenado en la sesión coincide con el token guardado en la base de datos o en un lugar seguro. Si no coinciden, significa que el usuario ha iniciado sesión desde otro dispositivo o navegador, y puedes cerrar la sesión actual.

1
2
3
4
5
6
7
8
9
// En el controlador o filtro de autenticación
$user_token = $this->session->userdata('user_token');
$stored_token = $this->obtenerTokenDelUsuario(); // Implementa esta función para obtener el token del usuario desde tu base de datos o lugar seguro.
 
if ($user_token !== $stored_token) {
    // Tokens no coinciden, cierra la sesión actual
    $this->session->sess_destroy();
    redirect('login'); // Redirige al usuario al inicio de sesión.
}

3. Manejo de sesiones cruzadas:

Si deseas permitir que el usuario cierre sesión en un dispositivo para iniciar sesión en otro, debes proporcionar una forma de cerrar sesión activamente. Al cerrar sesión, asegúrate de eliminar el token almacenado en la base de datos o lugar seguro.

Ten en cuenta que esta implementación es una solución básica y es importante asegurarse de que el token se almacene de manera segura y de que la comprobación de tokens sea adecuada para tu aplicación.

Si deseas una solución más robusta o si tienes requisitos de seguridad adicionales, también puedes considerar el uso de bibliotecas de autenticación de terceros que ofrecen funciones de gestión de sesiones más avanzadas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar