Автоматическая проводка не работает для TokenRelayGatewayFilterFactory в spring cloud gateway

#java #spring-boot #spring-cloud #spring-cloud-gateway

Вопрос:

Я пишу шлюз для микросервисов, используя spring cloud gateway. Я пытаюсь настроить шлюз для пересылки маркера аутентификации нижестоящим службам.

Я не могу автоматически подключить класс TokenRelayGatewayFilterFactory.

Ниже приведены мои врата pom.xml файл.

 <properties>
    <java.version>11</java.version>
    <spring-cloud.version>2020.0.3</spring-cloud.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-oauth2-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-security</artifactId>
        <version>2.2.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
 

Я использую spring cloud версии 2020.0.3

А ниже приведена моя конфигурация маршрутов,

 @Configuration
@EnableWebFluxSecurity
public class RouteConfig {
    @Autowired
    private TokenRelayGatewayFilterFactory filterFactory;
    @Bean
    public RouteLocator routeLocator(RouteLocatorBuilder builder){
        return builder.routes()
            .route("test",r->r.path("/test/**")
            .filters(f->f.filter(filterFactory.apply()).removeRequestHeader("Cookie")).uri("http://localhost:8082"))
            .build();
}
}
 

Когда я пытаюсь запустить проект, я получаю следующую ошибку,

 Description:

Field filterFactory in com.package.apigateway.configuration.RouteConfig required a bean of type 'org.springframework.cloud.gateway.filter.factory.TokenRelayGatewayFilterFactory' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'org.springframework.cloud.gateway.filter.factory.TokenRelayGatewayFilterFactory' in your configuration.
 

Когда я использую тот же класс из « org.springframework.cloud.security.oauth2.gateway.TokenRelayGatewayFilterFactory пакета(который устарел), я не получаю ошибку.

Любая помощь будет признательна.

Комментарии:

1. Безопасность Spring Cloud была удалена из spring cloud 2020.0. TokenRelayGatewayFilterFactory теперь она является частью самого spring-cloud-шлюза.

2. У меня также есть зависимость от spring-cloud-шлюза. Но все равно я получаю эту ошибку.

3. Удалите защиту spring cloud starter

4. Это работает!!.. Огромное спасибо.. Могу я узнать, в чем может быть причина этого?