2012-04-13 31 views
6

Deseo generar una identificación de sesión única para mi sesión. Entonces usé UUID. Aquí lo que hiceCómo convertir el valor de UUID a la cadena

if (session == null) { 

    session = httpServletRequest.getSession(true); 
    session.setAttribute("logedin", "0"); 

    if (!httpServletRequest.isRequestedSessionIdFromCookie()) { 

     UUID sessionID = UUID.randomUUID(); 

     Cookie sessionCookie = new Cookie("JSESSIONID", "sessionID"); //problem 

} 

El constructor acepta cookies dos cadenas, ¿Cómo puedo convertir mi UUID de cadena para que obtener el valor UUID que es único? Gracias

+1

El contenedor de servlets ya ha tratado de genera una cookie para ti Al sobrescribirlo con otro valor evitará que el contenedor de servlets encuentre su sesión. – gawi

+0

HHmmm gracias. Este es un punto muy importante que no conozco. Muchas gracias. En realidad, lo que estaba pensando es eso. La API de seguimiento de sesión genera la ID con el nombre 'JSESSIONID', así que pensé que simplemente cambiaba el valor. Pero usted está diciendo que el cambio de valor perturba el seguimiento de sesión predeterminado ..... hhmm vale, no cambio el valor pero quiero preguntar ¿puedo establecer setMaxAge() en el JSESSIONID predeterminado? Como obtener la cookie JSESSION predeterminada, establecer su maxAge y luego usar addCookie. ¿Puedo hacer eso? Gracias – Basit

+0

Si desea cambiar el máximo de edad para controlar cuándo caducará la sesión, debería establecer el elemento session-config> session-timeout en el web.xml. Tenga en cuenta que la cookie JSESSIONID no contiene necesariamente _sólo_ la ID de la sesión. En algunos contenedores, se agrega información adicional después de antes de la identificación de la sesión. Ver [esto] (https://www.ibm.com/developerworks/mydeveloperworks/blogs/Dougclectica/entry)/websphere_session_ids22? Lang = en para un ejemplo. Se supone que no debes alterar la cookie JSESSIONID si estás haciendo cosas normales. – gawi

Respuesta

24

Esto convertirá su id de sesión únicos para encadenar

String suuid = UUID.randomUUID().toString(); 
+0

Oooooops ... Gracias :) – Basit

0

Puede llamar toString() en todos los objetos de Java ...

+7

no en todos los objetos Java se obtiene un comportamiento deseado. en este caso, funciona porque el método 'toString()' está anulado: http://docs.oracle.com/javase/6/docs/api/java/util/UUID.html#toString() – logoff