JFinal

登录 注册

Jfinal实现单一用户登陆(挤掉之前用户)

现在要实现的功能是:同一个账户只允许一个地方登陆,不同电脑/IP登陆会挤掉前一个人,计划使用session加ip地址来实现,失败了(因为哪怕是同一台电脑不同浏览器登陆,session都不一样,此方法不通) 后来想用application来存取信息但是这个方法也不通,信息会一直放在application中,相当于用户永久登陆,看到别人使用HttpSessionAttributeListener来做的 具体成果后续更新

评论

  • 08-08 15:49
    @Jfinal 波哥 过来建议建议啊。。。
  • 08-08 16:09
    登录这个动作完成后,根据该用户的 id 判断当前登录用户是否已登录,如果已登录,踢出以前那个登录就好,其实很简单
  • 08-08 16:12
    @JFinal 就是这里的判断信息 你从什么地方取 我之前是放在session中的 但是不同浏览器session取到的也不是同一个 而且还要比较ip信息 才能判断是否挤掉
  • 08-08 16:21
    @Don小浩 这个问题与 ip 地址无关
  • 08-08 16:23
    @JFinal ?? 波哥 我的功能意思是 同一个账户 只能在一台电脑登录 如果别人在其他地方登录 我肯定要比较ip地址是否一致 而且我现在遇到的问题是这种东西应该存在哪里 session 和 application都不行
  • 08-09 09:03
    @JFinal 实现完成后 才明白您说的与ip地址无关的意思,一直在想实现,脑子有点蒙,有人提到ip地址判断 就没绕出这个坑
  • 08-09 09:06
    使用一个map来保存session信息,只要确保这个map是全局的 统一使用和维护的 key为用户名 用户登录的时候对map进行操作 在全局拦截器里对用户的session进行判断
    因为是根据session判断的 哪怕同一台电脑的不同浏览器登录也会挤掉 所以无需判断ip地址问题 这样就实现了单个账号只能唯一登录
  • 08-09 09:35
    @JFinal 在这个分享里提个问题 如果想让任意一个方法被拦截器拦截的话 你不光需要在方法上设置拦截器 还需要使用Duang.duang()、Enhancer.enhance()这两个任意一个方法 对它进行加强 才能达到拦截效果, 目前不清楚这两个增强各有什么好处 有什么不同 功能介绍上一模一样 而且要拦截的方法不支持静态方法 目前也不清楚原因
    最近忙于实现 有些问题可能需要抽出休息时间研究 波哥能给点思路之类的么
  • 08-09 09:37
    @Don小浩 shiro 可以实现
  • 08-09 09:39
    @Don小浩 百度搜索 KickoutSessionControlFilter
  • 发送