gpt4 book ai didi

java - Tomcat 唯一 SessionId

转载 作者:行者123 更新时间:2023-11-30 05:55:56 28 4
gpt4 key购买 nike

有什么方法可以配置(xml) tomcat (6.x) 来生成唯一的SessionId。(不扩展 ManagerBase/StandardManager)。

最佳答案

I am capturing user login details in db table,with Session Id in a column with unique constraint,and am getting unique constraint exception

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

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

  • 反过来做:在数据库中插入或选择必要的数据,获取数据库生成的 ID 并将其存储为 HttpSession 的属性。例如登录的用户 ID,或者只是整个 User 对象。

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

关于java - Tomcat 唯一 SessionId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7650524/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com