如何配置Zuul网关(正在侦听两个端口)以基于端口和URL组合拒绝请求?

时间:2019-12-03 15:31:25

标签: spring-boot ssl netflix-zuul

我有一个用例,需要从另一个Spring Boot应用程序和浏览器访问Zuul网关。

Spring Boot应用程序需要使用证书向Zuul进行身份验证。因此,我在端口8762上启用了两种方式的ssl,并且在端口8763上启用了一种方式的ssl用于浏览器访问。但是问题在于,现在我可以通过8763端口访问每个端点。有没有一种方法可以仅通过8762强制访问某些URL?例如,包含“ api”的网址只能通过端口8762而不是端口8763进行访问。有没有办法制作这种过滤器?

1 个答案:

答案 0 :(得分:0)

您可以创建自定义的预路由ZuulFilter,以标识传入的请求并确定是否需要进一步路由请求。

从上下文中获取有关传入请求(HttpServletRequest)的详细信息。这是一个示例片段供您参考:

@Override
public String filterType() {
    return FilterConstants.PRE_TYPE;
}

@Override
public int filterOrder() {
    return 1;
}

@Override
public boolean shouldFilter() {
    return true;
}

@Override
public Object run() {
    final RequestContext requestContext = RequestContext.getCurrentContext();
    final HttpServletRequest request = requestContext.getRequest();

    request.getRemotePort(); // Assign these to a variable to perform your business logic.
    request.getRequestURI();