作者:劲朋_511 | 来源:互联网 | 2023-09-18 21:27
需求:该url不需要登录,但又不允许外网通过zuul调用,只允许微服务间在内网调用如我们想通过用户id来或者用户的手机号码等关键信息实现:可以通过ZuulFilter进行拦截@Co
需求:该url不需要登录,但又不允许外网通过zuul调用,只允许微服务间在内网调用
如我们想通过用户id来或者用户的手机号码等关键信息
实现:可以通过ZuulFilter进行拦截
@Component
public class InternalURIAccessFilter extends ZuulFilter {
@Override
public Object run() {
RequestContext requestCOntext= RequestContext.getCurrentContext();
requestContext.setResponseStatusCode(HttpStatus.FORBIDDEN.value());
requestContext.setResponseBody(HttpStatus.FORBIDDEN.getReasonPhrase());
requestContext.setSendZuulResponse(false);
return null;
}
@Override
public boolean shouldFilter() {
RequestContext requestCOntext= RequestContext.getCurrentContext();
HttpServletRequest request = requestContext.getRequest();
return PatternMatchUtils.simpleMatch("*-noauth/internal*", request.getRequestURI());
}
@Override
public int filterOrder() {
return 0;
}
@Override
public String filterType() {
return FilterConstants.PRE_TYPE;
}
}
以上规定了网址 *-noauth/internal 命名格式来访问只供内部访问。如/user-noauth/internal、/user2-noauth/internal等都符合这个规则。直接复制以上代码即可用
有任何问题都可以讨论哦