1. 程式人生 > >javaweb防止使用者重複登入

javaweb防止使用者重複登入

單賬號同時只能一處登入

相關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銷燬正常
  • 關閉頁面或者瀏覽器的時候…
  • 使用者系統崩了的時候…
目前考慮得還不夠完善,所以想用心跳機制寫完美一點