当前位置: 首页 > 知识库问答 >
问题:

Spring云网关和TokenRelay过滤器

马坚
2023-03-14

我正在尝试将JHipster从使用Zuul迁移到Spring云网关。JHipster使用Eureka来查找路由,我相信我已经正确配置了Spring Cloud Gateway来查找路由并向它们传播访问令牌。下面是我的配置:

spring:
  cloud:
    gateway:
      default-filters:
        - TokenRelay
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true
          route-id-prefix: /services/
      httpclient:
        pool:
          max-connections: 1000
zuul: # those values must be configured depending on the application specific needs
  sensitive-headers: Cookie,Set-Cookie #see https://github.com/spring-cloud/spring-cloud-netflix/issues/3126
  host:
    max-total-connections: 1000
    max-per-route-connections: 100
  prefix: /services
  semaphore:
    max-semaphores: 500

我创建了一个pull请求,以显示集成Spring Cloud Gateway后发生了什么变化。

https://github.com/mraible/jhipster-reactive-microservices-oauth2/pull/4

复制问题的步骤:

git clone -b reactive git@github.com:mraible/jhipster-reactive-microservices-oauth2.git
cd jhipster-reactive-microservices-oauth2/gateway
docker-compose -f src/main/docker/jhipster-registry.yml up -d
docker-compose -f src/main/docker/keycloak.yml up -d
./mvnw
cd ../blog
docker-compose -f src/main/docker/mongodb.yml up -d
./mvnw

共有1个答案

阳文轩
2023-03-14

我能用这个答案解决这个问题。

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          predicates:
            - name: Path
              args:
                pattern: "'/services/'+serviceId.toLowerCase()+'/**'"
          filters:
            - name: RewritePath
              args:
                regexp: "'/services/' + serviceId.toLowerCase() + '/(?<remaining>.*)'"
                replacement: "'/${remaining}'"

我还必须将.pathmatchers(“/services/**”).authenticated()添加到安全配置中,ZUUL不需要这样做。你可以在这里看到我的promise。

 类似资料:
  • 我正在使用spring云网关作为边缘服务器。这就是流程 问题是,响应有响应是得到正确的200代码,注入的头是在响应上出现,但数据是不可用的响应。

  • 我使用spring cloud gateway将请求路由到我的下游应用程序,我定义了如下的路由器 路由工作正常,现在我需要添加一个预过滤器,它可以执行一些预条件并获得路由路径。但不知道如何动态更改uri。uri(“http://localhost:8081/test") 下面是我在preFilter中尝试的代码。 因此,我需要根据我的自定义过滤器中的db查找返回,从传入路径/user/test/*

  • 我有一个带有一些endpoint的anexo API,比如: 如何将Spring Cloud Gateway与这些endpoint一起使用?

  • //有什么方法可以在我的自定义过滤器类中获得“admin,XY8382,basic” 我的筛选器类

  • 我一直在试图找到一个与eureka服务器集成的spring cloud gateway的运行示例,以及一些Hystrix示例,但到目前为止我还没有找到。有什么地方可以找到它吗?我真的很想看到spring cloud gateway投入使用,取代我目前的Zuul API服务。 谢谢!