首页 > 解决方案 > HandlerInterceptor spring - 排除管理端口上的请求

问题描述

我希望我的 HandlerInterceptor 在我的 Spring Boot 应用程序中,不要在管理端口上的请求上运行。

management.port = 9091

我可以想到两种方法,但我正在寻找一种更标准的方法。

一种是从 HandlerInterceptor 中检查端口:

    @Override
    public boolean preHandle(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, @NonNull Object handler) {
        if(request.getLocalPort() == managementPort){
           return true;
        }
        else{
             ....
        }
}

第二个是在注册拦截器时排除所有与 managementPort 相关的路径:

@Override
public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myInterceptor).excludePathPatterns(managementPortEndpoints);
}

这很容易不同步。

有没有更本地的方法来实现它?(某种弹簧配置)

标签: javaspringspring-bootinterceptorhandlerinterceptor

解决方案


一旦对 management.port 的所有访问都是对以 /actuator 开头的 URL 的请求,spring 将不会对请求运行过滤器和拦截器。

所以,这似乎是解决问题的方法


推荐阅读