小编isa*_*tar的帖子

Spring Cloud Gateway 自定义网关过滤器不起作用

我正在尝试调试我的应用程序,但调试器没有命中此代码块。这是我的自定义网关过滤器。

@RefreshScope
@Component
public class AuthorizationHeaderFilter extends 
           AbstractGatewayFilterFactory<AuthorizationHeaderFilter.Config> {

@Autowired
Environment environment;

public AuthorizationHeaderFilter () {
    super(Config.class);
}

public static class Config {
}

@Override
public GatewayFilter apply(Config config) {
    return ((exchange, chain) -> {

        ServerHttpRequest request = exchange.getRequest();

        if(!request.getHeaders().containsKey(HttpHeaders.AUTHORIZATION)) {
            return onError(exchange, "No authorization header", HttpStatus.UNAUTHORIZED);
        }

        String token = Objects.requireNonNull(request.getHeaders().get(HttpHeaders.AUTHORIZATION))
                .get(0).replace("Bearer","");

        if(isJwtValid(token))
            return onError(exchange, "JWT Token is not valid", HttpStatus.UNAUTHORIZED);

        return chain.filter(exchange);
    });
}

private Mono<Void> onError(ServerWebExchange exchange, String error, HttpStatus status) {
    ServerHttpResponse response = exchange.getResponse();

    response.setStatusCode(status); …
Run Code Online (Sandbox Code Playgroud)

spring-boot spring-cloud spring-cloud-gateway

5
推荐指数
1
解决办法
6859
查看次数