Quantcast
Channel: Spring Boot can't intercept actuator access - Stack Overflow
Viewing all articles
Browse latest Browse all 2

Spring Boot can't intercept actuator access

$
0
0

In SpringBoot version 2.1.6 unable to intercept access actuator request Now I have a global interceptor

@Componentpublic class ServiceFilter implements HandlerInterceptor {//log4jstatic final Logger logger = LogManager.getLogger(ServiceFilter.class);private final RateLimiter limiter = RateLimiter.create(Runtime.getRuntime().availableProcessors() * 2 + 1);private final ThreadLocal<ExecuteRecordDto> executeRecord = new ThreadLocal<>();public ServiceFilter() {}@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {    ExecuteRecordDto recordDto =  ExecuteRecordDto.bulider(request);    executeRecord.set(recordDto);    if (!limiter.tryAcquire()) {        logger.warn("rate limiter ; json logger :  {}",CommonUtil.toJSONString(recordDto));        response.getWriter().print(CommonUtil.toJSONString(ResultStatus.status(407, "rate limiter")));        return false;    }    if (ObjectUtils.isEmpty(request.getHeader("Authorization"))) {        logger.warn("illegal request, json logger : {} ",CommonUtil.toJSONString(recordDto));        response.getWriter().print(CommonUtil.toJSONString(ResultStatus.status(403, "Permission denied")));        return false;    }    switch (TokenHandle.checkToken(request.getHeader("Authorization"))) {        //正常放行token        case 0:            response.getWriter().print(CommonUtil.toJSONString(ResultStatus.status(407, "rate limiter")));            return true;        //token 过期        case 1:            response.getWriter().println(CommonUtil.toJSONString(ResultStatus.status(408, "Token expire")));            break;        //非法token        case 2:            logger.warn("illegal token, json logger : {} ",CommonUtil.toJSONString(recordDto));            response.getWriter().print(CommonUtil.toJSONString(ResultStatus.status(409, "Illegal token ")));            break;        default:            throw new RuntimeException("server runtime exception");    }    return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {    ExecuteRecordDto recordDto = executeRecord.get();    logger.info("json logger : {}",CommonUtil.toJSONString(recordDto));    executeRecord.remove();}

}

And make it work

@Configurationpublic class ConfigFilter implements WebMvcConfigurer {private final ServiceFilter filter;@Autowiredpublic ConfigFilter(ServiceFilter filter){    this.filter = filter;}@Overridepublic void addInterceptors(InterceptorRegistry registry) {    registry.addInterceptor(filter).addPathPatterns("/**");}}

I requested my own api, get the effect I want1

How can SpringBoot intercept a visit to actuator2


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images