使用Eureka的ZUUL动态路由

时间:2016-08-03 17:54:06

标签: netflix-zuul spring-cloud-netflix

我有一个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;
}

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

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。因此yml中的zuul路由设置将生效。我仍然想知道如何做,然后将请求转发到其原始目的地。

0 个答案:

没有答案