您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Tomcat唯一SessionId

Tomcat唯一SessionId

我正在数据库表中捕获用户登录详细信息,会话ID在具有唯一约束的列中,并且正在获得唯一约束异常

您不应将Tomcat生成的会话ID作为唯一约束存储在数据库中。这是没有道理的。Tomcat的会话ID仅在所有现有活动会话中都是唯一的。Servlet规范不禁止在数月或数年后的某个时间点将过期会话的ID重新用于新会话。使用固定长度的32个字符的十六进制字符串作为会话ID,所有可能的ID都不是“无限”的。您无法阻止它在某个时候被其他客户端重用。

我不明白为什么您会在数据库生存期中长时间存储Tomcat生成的会话ID。每当过期时,您都应该将其从数据库删除。或者您应该以不同的方式解决您的问题。由于您未说明此“解决方案”背后的功能要求,因此我无法给出更合适的答案。但是,这里有一些提示

反之亦然:在数据库中插入或从数据库中选择必要的数据,获取数据库生成的ID,并将其存储为的属性HttpSession。例如,已登录用户ID,或仅是整个User对象。

或者,如果它需要延长会话的认生存期,例如“记住我”选项,那么您应该自己生成一个UUID(并测试它是否在数据库中尚不存在),然后在单独的cookie中使用它。

其他 2022/1/1 18:15:11 有395人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶