zoukankan      html  css  js  c++  java
  • Zuul Pre和Post过滤器

    一、项目架构图

    二、前置过滤器

    @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、查看结果

  • 相关阅读:
    activemq学习
    shell变量
    ext3文件系统目录限制问题
    linux性能优化cpu 磁盘IO MEM
    vs2010下编译osip2和eXosip2的4.0.0版的静态库及搭建开发环境
    samba的rpm包,只有tar.gz文件安装
    随记
    mount/umount系统调用
    不定参数的传递VA_LIST的用法
    samba服务器源码安装(非rpm)
  • 原文地址:https://www.cnblogs.com/linlf03/p/10388973.html
Copyright © 2011-2022 走看看