/ / Jak sprawdzić, czy istniejąca sesja jest unieważniona, czy nie? - java, sesja

Jak sprawdzić istniejącą sesję jest unieważniona, czy nie? - Java, sesja

Jak sprawdzić, czy istniejąca sesja jest unieważnionaalbo nie? W poniższym kodzie loginBean sprawdziłem każde logowanie, na którym użytkownik już się zalogował. Jeśli już jesteś zalogowany przez inny system, dezaktywuj tę sesję i utwórz nową. jeśli ta sesja została unieważniona przez limit czasu, następnym razem userSessionMap zawiera nazwę używaną i błąd unieważniający. więc jak to sprawdzić jest unieważnione?

Map appMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
Map<String, HttpSession> userSessionMap = (Map<String, HttpSession>) appMap.get("USERS");

if (userSessionMap.containsKey(getUsername())) {
log.info(getUsername() + " already loggedin. Closing existing sesssion");
HttpSession sess = userSessionMap.get(getUsername());
sess.invalidate();
}

Odpowiedzi:

12 dla odpowiedzi № 1

Spróbuj przejść false jako parametr do getSession (boolean) . Spowoduje to zwrócenie sesji, jeśli istnieje lub wróci null.

HttpSession session = request.getSession(false);
if(session==null || !request.isRequestedSessionIdValid() )
{
//comes here when session is invalid.

}

Zwraca bieżącą HttpSession powiązaną z tym żądaniem lub, jeśli nie ma bieżącej sesji i tworzenie jest prawdziwe, zwraca nową sesję. Jeśli tworzysz fałszywy a żądanie nie ma prawidłowej HttpSession, ta metoda zwraca zero.


8 dla odpowiedzi № 2

HttpSession session = request.getSession(false); da IllegalStateException jeśli sesja jest już unieważniona

boolean invalidated = false;
try {
request.getSession(false);
} catch(IllegalStateException ex) {
invalidated = true;
}