我必須限制來自不同地點的多個用戶登錄。 爲此,我已經寫代碼:限制用戶的多次登錄
ServletContext context = session.getServletContext();
HashMap logInMap = null;
if (context.getAttribute("logInMap") != null) {
logInMap = (HashMap) context.getAttribute("logInMap");
if (logInMap .containsValue(session.getId())) {
System.out.println("duplicatesession");
// done something...
}else if (logInMap.get(loginId) != null && !logInMap.get(loginId).equals(session.getId())) {
System.out.println("already Logged In");
//done something...
}
} else {
logInMap = new HashMap();
}
logInMap.put(loginId, session.getId());
context.setAttribute("loginMap",logInMap);
但在上面的代碼中的每個請求是如何產生一個新HashMap
。 如果我聲明HashMap
爲靜態,那麼在直接關閉瀏覽器時會發生問題。 如果任何人可以幫助解決這個問題,將不勝感激。 如果解決方案在Spring中會很棒。
根據你的代碼,你將'HashMap'存儲在'ServletContext'中,而不是每次都生成它。你不應該聲明它是靜態的。發生了什麼「問題」? Spring的方式是[spring security](https://projects.spring.io/spring-security/),它可能是你所需要的一種矯枉過正。 – Oleg