首页 > 学院 > 开发设计 > 正文

java 实现 一个账号只能在一个地方登陆,其他地方被下线

2019-11-14 22:06:26
字体:
来源:转载
供稿:网友
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";        }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表