如何解决Springboot@WebFilter拦截器未生效的问题-创新互联

如何解决Springboot @WebFilter拦截器未生效的问题?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

目前成都创新互联已为上千的企业提供了网站建设、域名、虚拟空间、网站改版维护、企业网站设计、乌尔禾网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

解决方法

在springboot启动类上添加

@ServletComponentScan(basePackages = “full.package.path”)

路径替换为@WebFilter所在包

补充知识:在spring boot中使用@WebFilter配置filter(包括排除URL)

我就废话不多说了,大家还是直接看代码吧~

@WebFilter(urlPatterns = "/*")
@Order(value = 1)
public class TestFilter implements Filter {
 
  private static final Set ALLOWED_PATHS = Collections.unmodifiableSet(new HashSet<>(
      Arrays.asList("/main/excludefilter", "/login", "/logout", "/register")));
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
    System.out.println("init-----------filter");
  }
 
  @Override
  public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;
    String path = request.getRequestURI().substring(request.getContextPath().length()).replaceAll("[/]+$", "");
    boolean allowedPath = ALLOWED_PATHS.contains(path);
 
    if (allowedPath) {
      System.out.println("这里是不需要处理的url进入的方法");
      chain.doFilter(req, res);
    }
    else {
      System.out.println("这里是需要处理的url进入的方法");
    }
  }
 
  @Override
  public void destroy() {
    System.out.println("destroy----------filter");
  }
}

当前文章:如何解决Springboot@WebFilter拦截器未生效的问题-创新互联
浏览路径:http://pwwzsj.com/article/ddogjc.html