Spring boot 在Spring引导上调用GenericFilterBean的doFilter()后返回
我在Spring boot项目中使用GenericFilterBean作为过滤器 在某些情况下,我希望传递过滤器逻辑上的下一个过滤器 我的过滤器如下所示Spring boot 在Spring引导上调用GenericFilterBean的doFilter()后返回,spring-boot,spring-mvc,spring-security,filter,servlet-filters,Spring Boot,Spring Mvc,Spring Security,Filter,Servlet Filters,我在Spring boot项目中使用GenericFilterBean作为过滤器 在某些情况下,我希望传递过滤器逻辑上的下一个过滤器 我的过滤器如下所示 public class MyFilter extends GenericFilterBean { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws
public class MyFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
if (anyCondition){
chain.doFilter();
return;
}
if (anyCondition){
chain.doFilter();
return;
}
if (anyCondition){
chain.doFilter();
return;
}
chain.doFilter();
}
}
如果我不返回,它会调用other chain.doFilter,这就是我返回的方式
İt调用chain.doFilter后是否会导致任何问题返回
处理这种情况是否正确?您的代码将始终调用chain.doFilter而不是doChain 比如说 公共类MyFilter扩展了GenericFilterBean{ @凌驾 public void doFilterServletRequest请求、ServletResponse响应、FilterChain链抛出IOException、ServletException{ HttpServletRequest HttpServletRequest=HttpServletRequest请求; //这将在其他筛选器之前执行 这里有一些代码 //现在我们执行其他过滤器 chain.doFilterrequest,响应; //此代码在完成“下一个”过滤器后执行 这里有一些代码 } } 但是您的代码总是执行下一个过滤器,然后就完成了。 您的代码很好,但是您可以使用if-then-else语句来实现 公共类MyFilter扩展了GenericFilterBean{ @凌驾 public void doFilterServletRequest请求、ServletResponse响应、FilterChain链抛出IOException、ServletException{ HttpServletRequest HttpServletRequest=HttpServletRequest请求; 如果条件1{ //为条件1做点什么 }否则,如果条件2{ //为条件2做点什么 }否则,如果条件3{ //为条件3做点什么 } 链多肯; } }
打电话给return没问题,但这是很多人不喜欢的风格。它会很好的工作,这意味着:1。调用下一个过滤器2。退出当前方法