2012-04-13 14 views
6

Desidero generare un ID di sessione univoco per la mia sessione. Quindi ho usato UUID. Ecco che cosa ho fattoCome convertire il valore UUID nella stringa

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 

} 

Il costruttore Cookie accetta due stringhe, come posso convertire il mio UUID a stringa in modo da ottenere il valore UUID che è unica? Grazie

+1

Il servlet container ha già cercato di genera un cookie per te. La sovrascrittura con un altro valore impedirà al contenitore della servlet di trovare la tua sessione. – gawi

+0

HHmmm grazie. Questo è un punto molto importante di cui non sono a conoscenza. Grazie mille. In realtà quello che stavo pensando è quello. L'API di tracciamento della sessione genera l'ID con il nome "JSESSIONID", quindi ho pensato di cambiare semplicemente il valore. Ma stai dicendo che il cambiamento del valore disturba il Session Tracking predefinito ..... hhmm ok non cambio il valore ma voglio chiederlo posso impostare setMaxAge() sul JSESSIONID predefinito? Come ottenere il cookie JSESSION predefinito, impostane il valore maxAge e quindi usa addCookie. Posso farlo? Grazie – Basit

+0

Se si desidera modificare il limite massimo per controllare quando scadrà la sessione, è necessario impostare l'elemento session-config> session-timeout nel web.xml. Si noti che il cookie JSESSIONID non contiene necessariamente _solo_ l'ID di sessione. Su alcuni contenitori, vengono aggiunte ulteriori informazioni prima dell'ID di sessione. Vedi [questo] (https://www.ibm.com/developerworks/mydeveloperworks/blogs/Dougclectica/entry)/websphere_session_ids22? Lang = it per un esempio. Non devi alterare il cookie JSESSIONID se stai facendo cose normali. – gawi

risposta

24

Questo ti permette di convertire il vostro ID di sessione unici a stringa

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

Oooooops ... Grazie :) – Basit

0

È possibile chiamare toString() su tutti gli oggetti Java ...

+7

non su tutti gli oggetti Java ottieni un comportamento desiderato. in questo caso, funziona perché il metodo 'toString()' viene sovrascritto: http://docs.oracle.com/javase/6/docs/api/java/util/UUID.html#toString() – logoff

Problemi correlati