java - 使用java,没有spring的hibernate web应用程序一次限制用户登录到单个 session

标签 java hibernate session jakarta-ee web-applications

我正在使用 Java、Hibernate 和 JSF 开发 Web 应用程序。 我希望用户仅限登录到单个 session ,如果用户已经登录,我不想在不注销第一个 session 的情况下从其他位置重新登录。

任何人都可以帮助了解如何实现这一目标。顺便提一下,根据我的要求,我不能使用 spring 或其任何功能。

最佳答案

你必须维护一个范围为 Set<Long> 的应用程序包含所有登录用户的逻辑标识符(如果您预计太多用户可能会将其写入数据库)

尝试登录时,通过检查用户在 Set 中的标识符来检查用户是否已经登录

注销后从 Set 中删除用户

session 过期后,从 Set 中删除用户

使用 HttpSessionListener 从集合中删除用户标识符 sessionDestroyed()

如果您将该数据保存到内存之外,则在应用关闭时清除该外部数据源

关于java - 使用java,没有spring的hibernate web应用程序一次限制用户登录到单个 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20899070/

相关文章:

java - Hibernate复合模式设计

PHP 没有在 session_start() 上创建 $_SESSION 变量;

asp.net - 将 session 信息存储在 ASP.Net Cookie 或 session 状态中?

java - 从微调器中为项目设置值

java - 如何使用 jetty 的 java keytool 创建/加载 jks 文件?

java - JTable 无法更改第一列的颜色

JAVA HashMap 重复

java - init 方法调用失败;添加 Hibernate envers 后嵌套异常是 java.lang.NoSuchMethodError

java - 如何在hql查询中将列的枚举类型转换为整数?

Nhibernate 探查器显示警告 "Use explicit Save or Update in session"