在javafx中防止同一用户同时登录

在javafx中防止同一用户同时登录,java,authentication,javafx,Java,Authentication,Javafx,我正在构建一个基于javaFX的服务器客户端应用程序。 该应用程序有一个mysql数据库,保存用户信息,包括用于登录目的的密码,但我想要的是防止用户同时登录,我在使用HttpServletRequest和Session之前已经做过,但这是用于WEB应用程序的,有没有办法对桌面应用程序执行相同的操作 这可能有点棘手。客户端应该为每个连接提供一个唯一的随机ID,服务器应该存储它 棘手的部分是知道用户何时注销。在正常情况下,您可以创建一个用于注销的REST方法,但是在非正常关机的情况下会发生什么呢?服

我正在构建一个基于javaFX的服务器客户端应用程序。
该应用程序有一个mysql数据库,保存用户信息,包括用于登录目的的密码,但我想要的是防止用户同时登录,我在使用HttpServletRequest和Session之前已经做过,但这是用于WEB应用程序的,有没有办法对桌面应用程序执行相同的操作

这可能有点棘手。客户端应该为每个连接提供一个唯一的随机ID,服务器应该存储它

棘手的部分是知道用户何时注销。在正常情况下,您可以创建一个用于注销的REST方法,但是在非正常关机的情况下会发生什么呢?服务器如何知道客户端已不在那里

我认为有两种方法可以解决这个问题:

  • 保持用户使用初始会话登录。用户登录后,拒绝新的身份验证请求。这很困难,因为您需要找到一种方法来处理客户端的非正常关闭,该客户端存储该会话交换的最后一条消息的时间戳
  • 如果收到新会话,请销毁旧会话。这样可以避免解决方案1的情况,用户将始终能够登录。旧会话将无效

  • 最常见的方法可能是存储sessionID和最后一次访问时间戳。您可以使用与webserver相同的方式生成它们