唯一登陆

在此,简单地聊聊同一账号不允许同时登陆的两种解决方案:

  • 登陆成功后返回前端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 具体逻辑

    }

}
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值