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