惟一登录

在此,简单地聊聊同一帐号不容许同时登录的两种解决方案:前端

  • 登录成功后返回前端token(含有时间撮),并将token保存到Redis或数据库中。每次请求都对比入参token和DB中的token是否一致?不一致,则返回消息并跳到登录页。处理方法上可参考上一篇文章:[登录成功后7天无操做需再次登录]
  • 监听器能够监听Session及其所包含的属性(Attribute)
    1. 创建一个监听器,实现HttpSessionAttributeListener接口
    2. 用户登录时将用户关键字段存入session中,将session放入map中
    3. 每一个新会话开启时,在监听器中对Session包含的属性进行判断,若是新增的属性与map中已有session的用户关键数据相同则移除已登录的session
    /**
     * 惟一登录监听器
     */
    public class MyListener implements HttpSessionAttributeListener{
    
        // 存放用户登录信息
        Map<String, HttpSession> sessionMap = new HashMap<String, HttpSession>();
    
        public void checkAttributeAdded(HttpSessionBindingEvent event) {
          // TODO 具体逻辑
    
        }
    
    }
    复制代码
相关文章
相关标签/搜索