首页 > 其他 > 详细

Zuul Pre和Post过滤器

时间:2019-02-16 20:36:17      阅读:930      评论:0      收藏:0      [点我收藏+]

一、项目架构图

技术分享图片

 

二、前置过滤器

@Component
public class TokenFilter  extends ZuulFilter{
    @Override
    public String filterType() {
        return PRE_TYPE;
    }

    @Override
    public int filterOrder() {
        return PRE_DECORATION_FILTER_ORDER - 1;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() throws ZuulException {
        RequestContext requestContext = RequestContext.getCurrentContext();
        HttpServletRequest request =  requestContext.getRequest();

        //这里从url参数获取,也可以从cookie,header里获取
        String token = request.getParameter("token");
        if(StringUtils.isEmpty(token)){
            //不通过
            requestContext.setSendZuulResponse(false);
            requestContext.setResponseStatusCode(HttpStatus.SC_UNAUTHORIZED);
        }
        return null;
    }
}

  

带了token就能正常访问

技术分享图片

否则,无法访问,返回401

技术分享图片

 

三、后置过滤器

1、增加后置过滤器

@Component
public class AddResponseHeaderFilter extends ZuulFilter {
    @Override
    public String filterType() {
        return POST_TYPE;
    }

    @Override
    public int filterOrder() {
        return SEND_RESPONSE_FILTER_ORDER - 1;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() throws ZuulException {
        RequestContext requestContext = RequestContext.getCurrentContext();
       HttpServletResponse response = requestContext.getResponse();
       response.setHeader("X-Foo", UUID.randomUUID().toString());
        return null;
    }
}

  在回复后里增加X-Foo,值为UUID

 

2、查看结果

技术分享图片

 

Zuul Pre和Post过滤器

原文:https://www.cnblogs.com/linlf03/p/10388973.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!