Tomcat 7/JBoss7 的自定义会话 ID 生成器

Posted

技术标签:

【中文标题】Tomcat 7/JBoss7 的自定义会话 ID 生成器【英文标题】:Custom session id generator for Tomcat 7/JBoss7 【发布时间】:2011-11-09 23:13:23 【问题描述】:

伙计们,

我的 web 应用需要 URL 安全的会话 ID。那些由 JBoss 7 生成的(在 JBoss 中嵌入了 Tomcat 7)有像“+”这样的字符,这让我们有些心痛。我正在探索的途径之一是生成 URL 安全会话 ID。有人知道 J2EE Web 应用程序中的正确挂钩点,我可以在其中插入我的自定义会话 id 生成器吗?

理想情况下,这个挂钩点来自 servlet API 本身。如果没有,我也对 Tomcat/JBoss 特定的解决方案感到满意。

谢谢。

-拉吉

【问题讨论】:

你检查this了吗?刚刚查看了 Servlet 3.0 规范 - 似乎没有标准机制...... 感谢您的指点。很有帮助。 【参考方案1】:

我知道这是 10 多年前提出的问题,但我刚刚有机会在自定义会话 ID 生成器上工作,并在我的 RND 中发现了这个悬而未决的问题。

这是一个 Tomcat 特定的解决方案。 (Tomcat 10.0)

您可以按照以下步骤在 Tomcat 中插入自定义会话 ID 生成器:

    实现org.apache.catalina.SessionIdGenerator接口。 为此实现创建 jar 文件并将其放在 CATALINA_HOME\lib 文件夹中(此步骤很重要,因为如果您不执行此步骤,您将收到 ClassNotFoundException) 在应用程序的 WEB-INF/context.xml 文件中添加会话 ID 生成器的配置。例如
<Context>
    <Manager>
       <SessionIdGenerator className="com.yourpackage.MySessionIdGenerator"/>
    </Manager>
</Context>

【讨论】:

以上是关于Tomcat 7/JBoss7 的自定义会话 ID 生成器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 会话模型中设置自定义字段?

春季/安全中的自定义会话超时

Tomcat SSL - IllegalStateException:SSL 会话 ID 不可用

取消嵌套命中和取消嵌套会话范围的自定义维度 BigQuery 代码过滤器

在会话中存储我的自定义类的 1000 多个实例的列表是不是存在内存问题?

如何防止 Spring Security 在会话中存储我的自定义 UserDetails 对象