有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

tomcat中的java HttpServletRequestWrapper和筛选器生命周期

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

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

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

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

其中每个请求都实例化一个新的UserRoleRequestWrapper?此筛选器是否应该安装一个请求包装器,用于在所有请求中共享?我很难找到关于此类类规范的文档


共 (1) 个答案

  1. # 1 楼答案

    我不认为你要找的是过滤器。似乎不适合这个目的。。。过滤器不是为这样的用例创建的;它们是为预处理/后处理请求和响应而创建的,重点是操作实际的请求/响应数据,而不是客户端-服务器通信的其他方面(如安全性)。记住,对用户进行身份验证可能会产生比处理HTTP请求周期更大的影响。安全性以低于HTTP周期的级别连接到JavaEE框架

    如果您想针对oauth2进行身份验证,最好为其实现某种JAAS实现,并将其插入Tomcat