javaweb防止使用者重複登入
阿新 • • 發佈:2018-11-23
單賬號同時只能一處登入
相關session
- 使用者儲存:session.setAttribute(“user”) 儲存的是User實體類
- 圖片驗證碼:session.setAttribute(“img_code”) 儲存的是一串字串
- 簡訊驗證碼:session.setAttribute(“verifycode”) 儲存的是一串字串
思路
- 使用者每次訪問伺服器會建立一個session,登入的時候會放key="user"的值進session中
- 獲取user的UserName(使用者名稱是唯一的),將其存放到一個全域性儲存servletContext中
- 每次登入時判斷該儲存空間中是否存在該使用者名稱,如果有則禁止登入
監聽session相關的事件
public class SessionListener implements HttpSessionListener, HttpSessionAttributeListener
{
public static final Logger logger= LoggerFactory.getLogger(SessionListener.class);
@Override
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
logger.info("session建立");
}
@Override
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
logger.info("進入session銷燬");
//移除username
}
@Override
public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
logger.info ("新增session項");
//servletContext加入username
}
@Override
public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
logger.info("移除session項");
//servletContext移除username
}
@Override
public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
}
}
Session銷燬處理
- 在使用者主動登出登入時,session銷燬正常
- 關閉頁面或者瀏覽器的時候…
- 使用者系統崩了的時候…
- …