Control de logueo de usuarios

CMaGNo

Lanero Regular
13 Ene 2005
48
Saludos!.

Estoy desarrollando una aplicacion web usando jsp y servlets y como BD MySQL. Tengo una tabla donde estan todas las cuentas de usuario con su respectivo passwd. Cuando un usuario intenta loguearse se confronta su login y passwd con los que hay en la BD y se le concede o niega el acceso si los valores coinciden o no. Hasta ahi ningun problema.

Lo que quiero hacer es saber que usuarios se encuentran conectados a la aplicacion en un momento determinado (aclaro, no estoy usando cuentas de usuario diferentes de MySQL por cada usuario, sino una sola conexion, desde la cual se accede a la tabla de usuarios que es donde estan todas las cuentas permitidas del sistema). Lo anterior con el fin de no permitir conexiones simultaneas con una misma cuenta, es decir que si intento conectarme con un login que actualemente esta logueado, me niegue el acceso, desloguee al que esta conectado o cualquier accion que yo quiera tomar. Otra razon para esto es que quisiera crear un chat y un modulo de administarcion de usuarios y para ello necesito tener la lista de todos mis usuarios logueados para, llegado el caso, poder expulsar del sitio a un usuario determinado.

En lo posible quisiera crear todo esto por mi mismo, ya que se que en la red existen muchos chats y otra clase de utilidades listas para insertarse en el sitio web.

Cualquier colaboracion, idea, sugerencia es bien recibida.

PD: No se si sea incorrecto crear este nuevo tema en lugar de publicarlo en el foro oficial de Java. Si es asi, mis disculpas ... pueden moverlo a su gusto :-p
 
No estoy seguro en JSP, pero por lo menos en ASP se puede manejar el objeto session, en el cual cuando se inicia y finaliza una session se puede ejecutar un procedimiento. Se que JSP tambien maneja session, pero no se si se puedan ejecutar estos procedimientos como mencione anteriormente.

Otra opcion es manejar usted mismo la session mediante cokies y que cada vez que habra una pagina el cliente osesa una solicitud al servidor, se actualice una tabla donde este la fecha-hora de la solicitud, si esta fecha-hora es mayor a x minutos, el usuario debe de volver a logearce, y al logearce, usted mira que la session no este activa ya; esto a groso modo, lo puede mejorar con otras cositas.
 
Pues lo del tiempo maximo de la sesion se puede establecer mediante el metodo setMaxInactiveInterval(valor) de HttpSession e incluso desde la herramienta de administracion del servidor tomcat. Lo de ejecutar procedimientos cuando se termine la sesion la verdad no tengo idea si puede hacerse en JSP.

Lo que me interesa realmente es un mecanismo con el cual pueda saber que usuarios estan logueados en mi sitio para efectuar operaciones como las que mencione: no permitir el logueo con una cuenta ya logueada y, si es posible, expulsar a un usuario del sitio cuando lo crea conveniente. En otras palabras, pretendo hacer algo parecido al administrador de usuarios de MySQL Administrator o PgAdmin o cualquiera de esos donde puedo saber que usuarios estan conectados a la base de datos. La diferencia es que, como mencione antes, solo uso una conexion a la BD y una tabla con todos los usuarios del sistema, asi que conocer el numero de conexiones a la BD no seria muy util, ademas la conexion a la BD solo la hago en ciertos momentos lo necesito.
 
Pues lo unico que se me ocurre es que cada vez que un usuario haga un solicitud al servidor, grabar en esa tabla de usuario en un campo el timestamp de esa ultima solicitud, y si esa hora + tiempo inactividad permitido es > mayor a la hora actual, el usuario esta conectado.

ej:
hora ultima solicitud: 6:00
hora ultima solicitud + tiempo max. inactividad (ej. 10 min.): 6:10

si son las 6:05, quiere decir que el usuario aun tiene la sesion activa, cuando sean las 6:11, el usuario ya abandono la sesion, por ende debe de hacer login de nuevo.
 

Los últimos temas