2012-04-13 13 views
6

Chcę wygenerować unikalny identyfikator sesji dla mojej sesji. Więc użyłem UUID. Oto co zrobiłemJak przekonwertować wartość UUID na ciąg

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 

} 

Konstruktor Cookie przyjąć dwa ciągi, w jaki sposób można przekonwertować mój UUID ciąg więc uzyskać wartość UUID, które jest wyjątkowy? Dzięki

+1

Pojemnik aplet już próbował wygeneruj plik cookie dla Ciebie. Zastąpienie go inną wartością spowoduje, że kontener serwletu nie znajdzie twojej sesji. – gawi

+0

HHmmm dzięki. To bardzo ważny punkt, o którym nie wiem. Wielkie dzięki. Właściwie to właśnie myślałem. API Session Tracking generuje identyfikator o nazwie 'JSESSIONID', więc pomyślałem, że właśnie zmieniam wartość. Ale mówisz, że zmiana wartości zakłóca domyślne śledzenie sesji ..... hhmm ok Nie zmieniam wartości, ale chcę zapytać, czy mogę ustawić setMaxAge() na domyślnym JSESSIONID? Podobnie jak domyślny plik cookie JSESSION, ustaw jego maxAge, a następnie użyj addCookie. Czy mogę to zrobić? Dzięki – Basit

+0

Jeśli chcesz zmienić maksymalny wiek, aby kontrolować, kiedy sesja wygaśnie, powinieneś raczej ustawić session-config> session-timeout element w web.xml. Zwróć uwagę, że plik cookie JSESSIONID niekoniecznie zawiera _only_ identyfikator sesji. W niektórych kontenerach dodatkowe informacje są dodawane po przed identyfikatorem sesji. Zobacz [to] (https://www.ibm.com/developerworks/mydeveloperworks/blogs/Dougclectica/entry)/websphere_session_ids22? Lang = en na przykład. Nie powinieneś modyfikować pliku cookie JSESSIONID, jeśli robisz regularne rzeczy. – gawi

Odpowiedz

24

ten przekształci identyfikator sesji unikatów ciąg

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

Oooooops ... Dziękuję Ci :) – Basit

0

Można zadzwonić toString() na wszystkich obiektach Java ...

+7

nie na wszystkich obiektach Java, aby uzyskać pożądane zachowanie. w tym przypadku działa, ponieważ metoda 'toString()' jest nadpisana: http://docs.oracle.com/javase/6/docs/api/java/util/UUID.html#toString() – logoff

Powiązane problemy