有没有办法配置(xml)tomcat(6.x)来生成唯一的SessionId.(不扩展ManagerBase/StandardManager).
我正在捕获db表中的用户登录详细信息,其中Session Id位于具有唯一约束的列中,并且我获得了唯一约束异常
您不应将Tomcat生成的会话ID存储为DB中的唯一约束.这毫无意义.Tomcat的会话ID仅在所有现有活动会话中是唯一的.Servlet规范不禁止在某个时间点,数月或数年后重新使用过期会话的ID.使用固定长度的32-char十六进制字符串作为会话ID,所有可能的ID都不是"无限制".您无法阻止它在某个时刻被重用于其他客户端.
我不明白为什么你会在数据库生命周期中存储一个Tomcat生成的会话ID.您应该在数据库过期时将其从数据库中删除.或者你应该以不同的方式解决问题.由于你没有说明这个"解决方案"背后的功能要求,我无法给出更合适的答案.然而,这里有一些提示:
反之亦然:在DB中插入或选择必要的数据,获取DB生成的ID并将其存储为HttpSession.例如,登录的用户ID,或仅整个User对象.
或者,如果需要扩展会话的默认生命周期,例如"记住我"选项,那么您应该自己生成一个UUID(并测试它是否在DB中不存在)并将其用于单独的cookie中.
| 归档时间: |
|
| 查看次数: |
8638 次 |
| 最近记录: |