在使用session的情況下,如何判斷是否已登錄呢?
1,登錄成功的後續操作
1 session.setAttribute(Constant2.SESSION_KEY_LOGINED_USER, user2); 2 session.setAttribute(Constant2.SESSION_KEY_LOGINED_FLAG, Constant2.FLAG_LOGIN_SUCCESS);//登錄成功的標識有兩個:"user",Constant2.SESSION_KEY_LOGINED_FLAG 3
2,註銷
session.removeAttribute(Constant2.SESSION_KEY_LOGINED_USER);
session.removeAttribute(Constant2.SESSION_KEY_LOGINED_FLAG);
3,判斷是否已經登錄
/*** * 判斷是否已登錄 * @param user2 * @return */ public static boolean isLogined(User user2,String loginFlag){ if(ValueWidget.isNullOrEmpty(user2)||ValueWidget.isNullOrEmpty(user2.getUsername()) ||loginFlag == null ||( !loginFlag.equalsIgnoreCase(Constant2.FLAG_LOGIN_SUCCESS))){ return false; }else{ return true; } } /*** * 判斷是否已登錄 * @param session * @return */ public static boolean isLogined(HttpSession session){ String loginFlag = (String) session .getAttribute(Constant2.SESSION_KEY_LOGINED_FLAG); User user2 = (User) session.getAttribute(Constant2.SESSION_KEY_LOGINED_USER); return isLogined(user2,loginFlag); }
調用:
if(!TVUtils.isLogined(session)){ map.put(Constant2.LOGIN_RESULT_KEY, Constant2.MODIFY_PASS_RESULT_NOT_LOGINED_YET);//沒有登錄 return HWJacksonUtils.getJsonP(map, callback); }
流程:
登錄成功之後,向session中寫入標識;
接收到請求時,判斷session中是否有標識,若有則表示已經登錄,否則需要登錄.
問題:
服務器接收到請求時,怎麼知道是哪個用戶呢?
通過瀏覽器的cookie,例如: