之前我写过一篇文章Spring Cloud Zuul(路由转发与过滤器)里边大概讲解了zuul的路由转发和过滤器,这篇文章我们实践一下zuul的过滤器在项目中的使用。
我们一般在项目中用网关要做很多的事情,一般有用户鉴权,路由转发,统一的错误返回格式等等
细化来分的话 我们可分三类过滤器。PreFilter、PostFilter、ErrorFilter。(当然可以在细化一个RoleFilter,一般情况下,在配置文件中配置就够了)
PreFilter 可以理解为前置拦截,在这里边你可以做一些请求前要做的事情,比如用户鉴权,当然如果你们项目是前后端分离的情况下,你还要放掉他们的OPTIONS请求。
具体的PreFilter代码如下:
/**
* @author MrWang
* @version v1.0
* @date 2018/12/05
* @Description pre前置过滤器
*/
@Component
public class PreFilter extends ZuulFilter {
@Value("${default.login.prefix}")
private String defaultLoginPrefix;
@Value("${default.login.time}")
private int loginTime;
@Autowired
private JedisCluster redisUtils;
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 0;
}
@Override
public boolean shouldFilter() {
return true;
}
/**
* 解决跨域/token校验
* 拦截器具体的代码
* @return
*/
@Override
public Object run() {
RequestContext requestContext = RequestContext.getCurrentContext();
HttpServletRequest request = requestContext.getRequest();
HttpServletResponse response = requestContext.getResponse();
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Head