1

我有一个zuul预过滤器:

@Override
public Object run() {
    // read authenticated User from session
    RequestContext context = RequestContext.getCurrentContext();
    AuthenticatedUser authUser = SessionUtil.getAuthUser();
    if (authUser == null) {
        // if not logged in
        // route to login service
    }
    // if logged in
    // add additional headers to requests
    return null;
}

所以在这个过滤器中,我首先查看请求是否经过身份验证。如果没有,我想将其重定向到loginEureka 中的服务,然后在用户登录后,他应该被转发到他最初请求的服务。

ZUUL 配置如下:

zuul:
  ignoredServices: '*'
  routes:
    service1:
      path: /s1/**
      serviceId: ${env}.s1
      stripPrefix: false
    service2:
      path: /s2/**
      serviceId: ${env}.s2
      stripPrefix: false
    login:
      path: /login/**
      sensitiveHeaders:
      serviceId: ${env}.login

eureka.client.serviceUrl.defaultZone=http://hostname:8761/eureka/
eureka.instance.non-secure-port-enabled=true

基本上,我想知道如何在过滤器代码中使用 Eureka 进行路由。

编辑:

我认为更好的设计可能只是重定向到 zuul 本身:获取主机并附加/login。这样zuul里面的路由设置yml就会生效。我仍然想知道该怎么做,然后将请求转发到其原始目的地。

4

0 回答 0