出于安全原因,我正在实现一个过滤器....页面被冻结的点,我不确切知道为什么,因为过滤器实际上还没有做任何事情!
<!-- spring security csrf -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>fr.telecom.support.context.DevicesSecurityFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这是我的过滤器:
public class DevicesSecurityFilter extends DelegatingFilterProxy {
public DevicesSecurityFilter() {
// TODO Auto-generated constructor stub
}
public DevicesSecurityFilter(Filter delegate) {
super(delegate);
}
public DevicesSecurityFilter(String targetBeanName) {
super(targetBeanName);
}
public DevicesSecurityFilter(String targetBeanName,
WebApplicationContext wac) {
super(targetBeanName, wac);
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
System.out.println ("do Filter...");
//super.doFilter(request, response, filterChain);
}
}
答案 0 :(得分:4)
过滤器 执行某些操作:它会阻止请求转到链中的下一个过滤器/ servlet,并且不会向响应发送任何内容。所以它基本上拦截了所有请求,并以对所有请求的空白响应作出响应。
要使过滤器为&#34;透明&#34;,其doFilter()
方法必须包含
filterChain.doFilter(request, response);
或者,因为它是DelegatingFilterProxy,它根本不应该有任何doFilter()方法,而是让父母的doFilter方法实现它的工作:委托给Spring bean它& #39;配置使用。实际上,您甚至不应该创建DelegatingFilterProxy的子类:正如其名称所示,它本身可以通过委派到Spring bean来工作。 Spring bean应该是进行过滤工作的人。
通过覆盖doFilter()
方法,您可以防止该授权发生。