1

我正在运行 Tomcat 7 - 不使用 Weblogic 或 JBoss。如何让 LoginModule 访问 HttpServletRequest?

我知道如果你在 jboss 和 weblogic 中的类似方法中,你可以通过 PolicyContext 来做到这一点。但我既没有运行 JBoss 也没有运行 Weblogic。我正在运行所有 Tomcat。

有谁知道这是否可能?

我有一个为每个请求调用的过滤器,在过滤器中,我将一些信息设置到 HttpSession 中。在我的 LoginModule 中,我需要访问该信息。

同样,我没有运行 Jboss 或 Weblogic——这是迄今为止我看到的人们可以访问请求的唯一方式。

4

1 回答 1

3

Tomcat 7 不提供对来自 LoginModule 的 httprequest 的本地访问(与 JBoss 7 不同)。您需要自己实现它。为此,您可以使用与 JBoss 相同的原理:

  • 创建一个将当前 httprequest 存储在 ThreadLocal 中的阀门(JBoss 中的 org.jboss.as.web.security.SecurityContextAssociationValve)
  • 通过简单地读取存储在 ThreadLocal 中的值来检索 LoginModule 中的当前 httprequest(JBoss 使用 PolicyContext 对象和处理程序 org.jboss.as.web.security.HttpServletRequestPolicyContextHandler )
于 2013-12-19T21:17:18.657 回答