Se cambia los datos de Session al realizar ALT+TAB

Hola,

Necesito la ayuda de ustedes, resulta que tengo una aplicación web (Spring + Hibernate) bancaria, para ingresar a la aplicación el usuario debe ingresar usuario/password, luego al presentarse un cliente debe buscarlo en el sistema para poder realizar una operación especifica.

En una misma computadora puede ser usada por dos usuarios, usuario “A” y usuario “B”, con lo cual en esta misma computadora puede existir dos IE levantados con la aplicación pero en los cuales fueron ingresados con usuario distintos, el usuario “A” realiza una operación bancaria, luego la computadora es usada por el usuario “B” y realiza ALT+TAB para ir a su sesión pero al realizar esto la información guardada en sesión es cambiada a la “A” produciendo que la contabilidad de la operación es registrada en la contabilidad del usuario “A” en vez de “B”.

Hay alguna forma de evitar este tipo de problema por spring o por alguna otra forma ?

SI no se entiende pido disculpa y sere más claro.

Espero sus comentarios

Desde ya muchas gracias.

Comentarios

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.
Imagen de oscarblancarte

cookies

Muy probablemente el problema este en las cookies, ya que aunque te encuentres en dos pantallas del mismo navegador, estos comparten las mismas cookies, En el caso de java, cuando te logeas, se crea una cookies con la variable jsessionid, la cual cuando se hace un request esta variable viaja al servidor para recuperar los datos de session asociados a este usuario.

Creo que dar una solución a este problema sera bastante complicado por lo que te recomendaría que en lugar de esto utilices dos navegadores distintos como IE y chrome o Firefox, de esta forma cada navegador mantendrá su propio jsessionid y a si no habrá datos revueltos entre sessiones.

saludos.

Bueno es simple

Usa dos usuarios en la misma sesión como el multisesión de google.
en PHP se hace con la variable $_SESSION puedes poner $_SESSION['0_name']="user 1"; y $_SESSION['1_name']="user 2" luego usas las variables del navegador para saber en user estas index.php?user=0 o user=1 y si usas urls amigables puedes poner /u/0 o /u/1 es simple.
Más o menos creo que es lo que hace google.

Utiliza cookies con Path específico

 

Como sugiere Melenas (¿será que tiene una gran melena?), tú puedes utilizar URLs distintas para cada sesión del usuario.

Por ejemplo, Google Mail utiliza para cada sesión del usuario una URL distinta utilizando el mismo navegador:

https://mail.google.com/mail/u/0/#inbox
https://mail.google.com/mail/u/1/#inbox

Para que esto funcione, necesitas agregar cookies para cada ruta específica. Por ejemplo, siguiendo con Google Mail, en el navegador se tienen:

/mail/u/0

/mail/u/1

En Java, necesitar usar la clase javax.servlet.http.Cookie como en el siguiente ejemplo:

Cookie cookie = new Cookie("GMAIL_AT", "abc123");

// 24 horas de validez (en segundos)
cookie.setMaxAge(24 * 60 * 60);

// Accesible solo en esta ruta
cookie.setPath("/mail/u/0");

// Agregar cookie a la respuesta
response.addCookie(cookie);

Espero que esto pueda serte de utilidad.

~~~

No usar Cookies

Gracias por la respuesta pero la idea es no usar Cookies ya que son computadoras especificas (Wyse) y el Cliente no quiere que se grabe nada localmente en donde se ejecuta el IE, es así, es increíble pero real.

Estoy viendo la posibilidad de pasar datos específicos desde el .jsp al server para poder realizar una validación pero no puedo lograrlo, no se porque no lo recibo en el server, lo que tengo pensado es validar por ejemplo el nombre del usuario que paso desde el .jsp con lo que guarde en la sesión, si es igual sigo y si es distinto alertar o encontrar la sesión correcta, algo por el estilo, si sabes la forma avísame.

Gracias.