public class Response401Filter extends ZuulFilter {
@Value("${safebox.loginUrl}")
private String loginUrl;
@Override
public String filterType() {
return "post";
}
@Override
public int filterOrder() {
return 0;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() throws ZuulException {
log.info("---------------Response401Filter--------------------------");
RequestContext currentContext = RequestContext.getCurrentContext();
HttpServletResponse response = currentContext.getResponse();
HttpServletRequest request = currentContext.getRequest();
int status = response.getStatus();
log.info(String.valueOf(status));
if (status==401) {
try {
response.sendRedirect(loginUrl);
} catch (IOException e) {
log.error("自动跳转失败,请检查loginUrl是否正确");
}
}
return null;
}
}
post 为请求完成后的过滤器,过滤顺序最晚。
response.sendRedirect(url);
url可以是“/x/x”格式,那就是根据原有的路径前缀发送请求,
url如果是http://xxxx 可以直接重定向到一个链接(也可以是第三方的)。