如何检查现有会话是否无效?

Man*_*noj 5 java session

如何检查现有会话是否无效?在以下loginBean代码中,我检查了用户已经登录的每次登录.如果已由其他系统登录,请停用该会话并创建新会话.如果该会话因超时而失效,则下次userSessionMap包含usedname和error以使其无效.那么如何检查它是无效的?

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();
}
Run Code Online (Sandbox Code Playgroud)

NIN*_*OOP 12

尝试将false参数传递给getSession(boolean).如果会话存在,它将返回会话,否则它将返回null.

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

}
Run Code Online (Sandbox Code Playgroud)

返回与此请求关联的当前HttpSession,如果没有当前会话且create为true,则返回新会话.如果create为false且请求没有有效的HttpSession,则此方法返回null.


Aru*_*hny 10

HttpSession session = request.getSession(false);IllegalStateException如果会话已经失效,将给出

boolean invalidated = false;
try {
    request.getSession(false);
} catch(IllegalStateException ex) {
    invalidated = true;
}
Run Code Online (Sandbox Code Playgroud)