2011-05-04 19 views
6

Para poner un poco de contexto, estoy desarrollando una API para rastrear las acciones de los usuarios en el sitio (también para los usuarios). Hasta ahora, usamos jsessionId para identificar a cada usuario y sus acciones.¿Es jSessionId realmente único?

Esa API, ahora se ejecuta en Tomcat y JBoss.

La pregunta realmente importante es que, dado que analizamos todos los datos uno por día, ¿está de alguna manera garantizada la exclusividad de este jsessionId durante todo el día? O, al mismo tiempo, ¿otro usuario puede obtener el mismo jsessionId utilizado anteriormente por otro usuario?

Gracias de antemano.

+1

Esto es solo una suposición, pero como el jSessionId básicamente es algo así como un UUID, en teoría podría ser posible que se produzcan colisiones, pero debería ser EXTREMADAMENTE improbable. Ver http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates – helpermethod

Respuesta

7

Lo sentimos, no está especificado. Solo se requiere que sea único para ese jvm en ese momento. Es decir, los identificadores de sesión pueden reutilizarse varias veces al día, siempre que nadie más tenga una sesión en su lugar. Estoy de acuerdo en que la mayoría de las implementaciones reales pueden ofrecer una garantía más sólida, pero no creo que pueda contar con ella.

Eche un vistazo a this mailing list - en él las personas discuten la reutilización de la id de sesión tanto en tomcat como en resina.

Por lo tanto, básicamente la suposición de que la ID de sesión es única, solo es cierta hasta que la sesión se destruye.

+0

Gracias por responder. Nos preguntábamos esa posibilidad. Entonces, ¿hay algún método para rastrear usuarios invitados? –

+0

Los casos específicos discutidos aquí significan que al ** mismo usuario ** se le asigna la misma ID de sesión para una nueva sesión. Por lo que entendí la pregunta, esto no sería un problema. La misma ID de sesión que se reutiliza para otro usuario no sería imposible, pero muy poco probable (a menos que haya alguna manipulación maliciosa). –

+1

Solo para asegurarme de que estoy listo para entrar - Sí, puedes rastrear usuarios. Pero debe tener cuidado y darse cuenta de que tan pronto como se libere la sesión (SessionListener es su amigo), alguien más podría usar esa ID – MJB