java - 如何基于 URL 模式应用 Spring Boot 过滤器?

标签 java spring filter spring-boot annotations

我创建了一个 Spring Boot 过滤器 - 使用 @Component 注释实现 GenericFilterBean

@Component 
public class MyAuthenticationFilter  extends GenericFilterBean {
...
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
...
}
}

过滤器由 Spring Boot Framework 自动识别,适用于所有 REST API。我希望此过滤器仅适用于某个 URL 路径,例如 /api/secure/* 但我找不到正确的方法。 我试过 @WebFilter 但没有用。 我没有使用 XML 配置或 servlet 初始化程序 - 只是注释。

什么是让它工作的正确方法?

最佳答案

如果您能够扩展 OncePerRequestFilter,还有另一种选择。例如:

public class SomeFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        // your filter logic ....
    }

    @Override
    protected boolean shouldNotFilter(HttpServletRequest request) {
        String path = request.getServletPath();
        return !path.startsWith("/api/secure/");
    }
}

关于java - 如何基于 URL 模式应用 Spring Boot 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39710526/

相关文章:

java - 在 Mac OS (Snow Leopard) 上切换 J2SE 版本

java - 在方法或构造函数之外实例化对象?

java - 我如何为给定的 SQL 查询编写 JPA 查询

java - 如何在 Eclipse 中从 Java 类查找 Spring XML 定义

javascript - 使用jQuery onChange事件过滤是过滤表头,而不仅仅是表体

python - 过滤 python 中的条目列表

ios - 数组对象的过滤字典

java - 将对象写入文本文件的最佳方法

java - ConstraintViolationException 和 MethodArgumentNotValidException 之间有什么区别

Spring数据elasticSearch使用findOne返回null