首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制用户多次登录

问限制用户多次登录
EN

Stack Overflow用户
提问于 2017-08-04 17:48:42
回答 1查看 61关注 0票数 0

我必须限制来自不同地方的用户的多次登录。为此,我编写了如下代码:

代码语言:javascript
复制
ServletContext context = session.getServletContext();
HashMap logInMap = null;
if (context.getAttribute("logInMap") != null) {
  logInMap = (HashMap) context.getAttribute("logInMap");
  if (logInMap .containsValue(session.getId())) {
    System.out.println("duplicatesession");
    // done something...
  }else if ( logInMap.get(loginId) != null && !logInMap.get(loginId).equals(session.getId()) ) {
    System.out.println("already Logged In");
    //done something...
  }
} else {
  logInMap = new HashMap();
}
logInMap.put(loginId, session.getId());
context.setAttribute("loginMap",logInMap);

但在上面的代码中,每个请求都会生成一个新的HashMap。如果我声明HashMap为静态,那么当我直接关闭浏览器时就会出现问题。如果有人能帮助解决这个问题,我们将不胜感激。如果解决方案在Spring中,那就太好了。

EN

回答 1

Stack Overflow用户

发布于 2017-08-04 17:57:51

如果我理解正确的话,您希望限制用户一次只登录一次。

用例1:一旦用户从另一个地方登录,就注销旧登录

解决方法:在login表中,在user_credentials表is_loggedIn中保留一列,登录成功时设置为True,注销后设置为false。每次检查登录凭据时,如果is_loggedIn设置为true,请在内部调用注销,以删除之前的用户,然后再次调用登录。

用例2:在用户从以前的状态注销之前,不允许用户登录

解决方案:参考上面在user_login credentials表中有一列的解决方案,如果is_loggedIn设置为真,则抛出错误消息"logout from previous device“。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45503573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档