我有一个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;
}
所以在这个过滤器中,我首先查看请求是否经过身份验证。如果没有,我想将其重定向到login
Eureka 中的服务,然后在用户登录后,他应该被转发到他最初请求的服务。
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
就会生效。我仍然想知道该怎么做,然后将请求转发到其原始目的地。