Tomcat中的HttpServletRequestWrapper和Filter生命周期

时间:2012-12-02 05:12:15

标签: java java-ee tomcat servlets servlet-filters

我正在编写Tomcat应用程序,并且正在对Google的oauth2服务进行身份验证。我原本打算编写一个简单的Filter来进行身份验证,但无法在Filter中设置用户主体。根据我的理解,您必须让Filter调用已实施的HttpServletRequestWrapper并将其设置在该类as seen in this post

我非常确定Tomcat只会实例化您可能定义的每种类型的Filter,并且所有请求都会通过Filter链中的这个单个对象(如果我错了,请纠正我)。

在链接到代码中,调用代码是否正确

next.doFilter(new UserRoleRequestWrapper(user, roles, request), response);

每个请求都在实例化一个新的UserRoleRequestWrapper?这个过滤器是否应该有一个请求包装器实例化,以获得共享amonsgst所有请求?我很难找到关于这些类的规范的文档。

1 个答案:

答案 0 :(得分:0)

我不认为过滤器是您正在寻找的。对于这个目的来说似乎并不合适......没有为这些用例创建过滤器;它们是为处理前/后处理请求和响应而创建的,重点是操纵实际的请求/响应数据,而不是客户端 - 服务器通信的其他方面(例如安全性)。请记住,对用户进行身份验证可能会产生进一步的影响,而不仅仅是处理HTTP请求周期。安全性与HTTP循环相比,在JavaEE框架中更低。

如果你想对oauth2进行身份验证,你应该为它实现某种JAAS实现,然后将其插入Tomcat。