Sessiones...

Hola a todos, estoy desarrollado una aplicacion en jsp quiero saber como puedo impedir que un usuario entre al sistema dos veces con la misma cuente al mismo tiempo...

Lo que queiro es que si un usuario entra al sistema con su login u su password e intenta entrar nuevamente con la misma cuenta, teniendo habierta la sesion anterior, el sistema indique que no puede entrar ya que el ese usuario tiene ua sesion abierta..

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

hola solo queria decirten lo

hola solo queria decirten lo mucho que te amo y espero estar contigo para siempre

*-*-*-*-*

Base de Datos

Sería importante que nos platicaras tu arquitectura y los componentes de tu Software, así como la carga esperada.

Si la webapp se va a enlazar con una base de datos ( o no tienes inconveniente en hacerlo ) y no esperas una cantidad grande de usuarios, por cada login puedes crear un registro de sesión, tal vez con el jsessionid como llave primaria y almacenando los datos del usuario, así como un timestamp de última acción y probablemente hasta la IP. Este registro de dicha tabla sería destruído cuando el usuario da logout y/o con un daemon thread que barra la sesión cada X tiempo.

Tengo una pequeña aplicación que usa el JCS de Jakarta haciendo algo similar con objetos de sesión serializables, pero creo que sería una mala idea si esperas muchos usuarios. Si no tienes inconveniente con éllo avísame para pasarte tus fuentes ( de cualquier forma pienso hacerlo Open Source en cuanto el javadoc esté un poco decente :P ).

Saludos y suerte,

Imagen de Gabriel

Se me ocurre esta idea, aver

Se me ocurre esta idea, aver que opinan los demas

Coloca el usuario en el ContextApplication, claro lo unico malo seria el tiempo del session, tendrias que usar un SessionListener para que cuando muera esa session elimine el usuario del contexto, si no te gusta, pues otra forma que se me ocurre es con BD como indicaba por alla el amigo, usar una BD bastante pequeña puede ser muy util, ya que con el SessionListener controlas la entrada y la salida del usuario en el sistema, pero volvemos con lo mismo del tiempo de la sesion, ya que si la persona entra y sale (Dandole a la X no por logout) y la session dura 30 min, no podra entrar si no hasta despues de 30 min. ya que la session no se ha invalidado, y tendras que esperar que el metodo destroy se ejecute para que actualize la BD.

Sun Certified Java Developer
Sun Certified Java Programer
Brainbench Certified JavaServer Pages

O_O que pex con ese penultimo mensaje?

Hola, pues para resolver tu problema se me ocurre usar una BD, en donde tengas una tabla hecha de usuarios y que un campo tipo boolean de esa tabla te sirva de bandera para saber si el usuario esta conetado.

por ejemplo: cuando el usuario entre haces una consulta a la tabla y si el campo esta en false haces un update a la tabla y ese campo lo pones en true y le concedes el aceso si el mismo usuario quiere entrar con esa misma cuenta pues vuelves hacer una consulta sobre esa tabla y si el campo esta en true pues le dices que no puede acceder por que ya hay una sesion abierta con ese usuaio. y cuando el usuario le de logout pues le das un update a esa tabla y la vuelves a poner en false.

sale, espero que te sirva de algo este consejo.

byetes

Podrias resolverlo usando una tabla y un campo tpo boolean

Hola, pues para resolver tu problema se me ocurre usar una BD, en donde tengas una tabla hecha de usuarios y que un campo tipo boolean de esa tabla te sirva de bandera para saber si el usuario esta conetado.

por ejemplo: cuando el usuario entre haces una consulta a la tabla y si el campo esta en false haces un update a la tabla y ese campo lo pones en true y le concedes el aceso si el mismo usuario quiere entrar con esa misma cuenta pues vuelves hacer una consulta sobre esa tabla y si el campo esta en true pues le dices que no puede acceder por que ya hay una sesion abierta con ese usuaio. y cuando el usuario le de logout pues le das un update a esa tabla y la vuelves a poner en false.

sale, espero que te sirva de algo este consejo.

byetes