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

  • 相关阅读:
    ajax上传文件
    nginx location指令详解
    总结php删除html标签和标签内的内容的方法
    useBuiltIns: 'usage'
    uni-app如何页面传参数的几种方法总结
    基于 schema 的数据校验
    canvas时点击事件和长按冲突
    vue 下载文件流,后台是get方式 ,并且导出出现excel乱码问题
    uni-app canvas 实现文字居中
    git reflog 回退
  • 原文地址:https://www.cnblogs.com/linlf03/p/10388973.html
Copyright © 2011-2022 走看看