java 實現 一個賬號只能在一個地方登陸,其他地方被下線


其實方法有很多的,我這獻丑了。

使用理解java 四大作用域。

思路:理解java 四大作用域的關鍵。

第一個地方登陸:

1.得到請求的SessionId 和 登陸的 用戶名

2.把SessionId 存到application里,用戶名存到當前session里

        ActionContext ac = ActionContext.getContext();
            Map<String, Object> applicationMap=ac.getApplication();
            Map<String, Object> sesisonMap = ac.getSession();
       //請求的sessionId String currentSeesionId
= getRequest().getSession().getId(); applicationMap.put(loanUserE.getUname(), currentSeesionId); sesisonMap.put(CommonVar.SSO_LOGIN_NAME_KEY,loanUserE.getUname());

 

第二個地方登陸:

1.獲取瀏覽器的  SessionId 和取得  登陸的用戶名

2.在當前的session 里取得  用戶名對應的關鍵字  ,用關鍵字在application里獲取SessionId ,

作比較,不相等就跳到登陸。

 攔截器:       

/** 初始化參數獲得 */ ActionContext actionContext = arg0.getInvocationContext(); /** HttpServletRequest參數 */ HttpServletRequest request = (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST); /** HttpServletResponse參數 */ HttpServletResponse response = (HttpServletResponse) actionContext.get(StrutsStatics.HTTP_RESPONSE); /** Session參數 */ Map<String, Object> sessionMap = actionContext.getSession(); Map<String, Object> appcationMap = actionContext.getApplication(); String loginName = null; // 上下文對象中的sessionId String sessionId = null; if (!sessionMap.isEmpty()) { loginName = (String) sessionMap.get(CommonVar.SSO_LOGIN_NAME_KEY); } if (null != loginName) { sessionId = (String) appcationMap.get(loginName); } // 當前會話的sessionId String currentSessionId = request.getSession().getId(); if (!currentSessionId.equals(sessionId)) { return "loanUserLogin"; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM