Tomcat LoginModule - 访问httprequest

时间:2013-07-08 14:30:33

标签: java security tomcat servlets

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

我知道你可以通过PolicyContext来实现它,如果你在jboss和weblogic中的类似方法。但我既不运行JBoss也不运行Weblogic。我正在运行所有Tomcat。

有人知道是否有可能吗?

我为每个请求调用了一个Filter,在Filter中,我将一些信息设置为HttpSession。在我的LoginModule中,我需要访问该信息。

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

1 个答案:

答案 0 :(得分: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)