使用java,hibernate web应用程序一次限制用户登录单个会话而不使用spring

我正在使用Java,Hibernate和JSF开发Web应用程序。 我希望用户限制只登录到单个会话,即如果用户已经登录,我也不希望在不注销第一个会话的情况下从其他位置登录。

任何人都可以帮助我们知道如何实现这一目标。 根据我的要求,我不能使用弹簧或其任何function。

您必须维护一个包含所有登录用户逻辑标识符的应用程序作用域Set (如果您希望太多用户可能将其写入DB)

登录尝试后,通过检查该Set标识符来检查用户是否已登录

注销后从该Set删除用户

会话到期后,从该Set删除用户

使用HttpSessionListener从Set sessionDestroyed()删除用户标识符

如果您将数据保留在内存中,则在应用程序关闭时清除该外部数据源