class AuthFilter implements GlobalFilter, Ordered {
    @Value("${filter.white-list}")
    private List<String> whiteList;
    @Autowired
    private JWTTokenTool jwtTokenTool;

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {<FILL_FUNCTION_BODY>}

    @Override
    public int getOrder() {
        return -100;
    }

    private DataBuffer sendResp(ServerHttpResponse response) {
        JSONObject result = (JSONObject) JSONObject.toJSON(new RespModel(RespEnum.UNAUTHORIZED));
        DataBuffer buffer = response.bufferFactory().wrap(result.toJSONString().getBytes(StandardCharsets.UTF_8));
        return buffer;
    }
}

        for (String white : whiteList) {
            if (exchange.getRequest().getURI().getPath().contains(white)) {
                return chain.filter(exchange);
            }
        }
        String token = exchange.getRequest().getHeaders().getFirst("SonicToken");
        ServerHttpResponse response = exchange.getResponse();
        response.getHeaders().add("Content-Type", "text/plain;charset=UTF-8");
        DataBuffer buffer = sendResp(response);
        if (token == null) {
            return response.writeWith(Mono.just(buffer));
        }
        // verify token
        if (!jwtTokenTool.verify(token)) {
            return response.writeWith(Mono.just(buffer));
        }
        return chain.filter(exchange);
    
<no_super_class>