我正在尝试将带有 uri 匹配器的 Grails 3.0.12 拦截器应用于 Spring Boot Actuator 提供的管理端点。我将执行器management.context_path属性设置为/admin。
UrlMappings.groovy 中映射的所有端点都被拦截,但由 Spring Boot Actuator 管理的端点没有。相反,我在日志中看到以下内容,表明拦截器被绕过:
DEBUG: org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping - Looking up handler method for path /admin/metrics
DEBUG: org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping - Returning handler method [public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()]
这是我的拦截器:
class LoginInterceptor {
def securityService
int order = HIGHEST_PRECEDENCE
LoginInterceptor() {
match(uri: "/**")
}
boolean before() {
if (!request.exception) {
securityService.authenticateUser()
}
true
}
boolean after() { true }
void afterView() { /* no-op */ }
}
这是 application.yml 中的管理配置
management:
context_path: /admin
如何确保拦截执行器提供的端点?