【发布时间】:2020-04-29 21:12:41
【问题描述】:
我正在关注这个链接。
https://stackoverflow.com/a/57611351/7103694
我缺少的是关于如何模拟我用于 zuul 代理的过滤器的部分。
这是我的错误日志。
com.netflix.zuul.exception.ZuulException: Filter threw Exception
...
Caused by: .com.demo.example.exception.AccessTokenMissingException: No access token found in request headers.
我有一个自定义预过滤器来检查授权标头。
public class PreRouteFilter extends ZuulFilter {
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 1;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() throws ZuulException {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
String header = request.getHeader("Authorization");
// Check header if it contain AUTHORIZATION key and value starting with "Bearer "
if (header == null || !header.startsWith("Bearer ")) {
ctx.set("error.status_code", HttpServletResponse.SC_UNAUTHORIZED);
throw new AccessTokenMissingException("No access token found in request headers.");
}
return null;
}
}
我通过这个配置添加了我的过滤器。
@Configuration
public class FilterConfig {
@Bean
public PreRouteFilter routeFilter() {
return new PreRouteFilter();
}
}
【问题讨论】: