• springboot springcloud zuul 过滤器


    1.继承类:ZuulFilter

    2.丢失请求头:Authorization

    3.转发请求头:Authorization 

    4.使用场景:验证权限

    1.继承类:ZuulFilter

    package com.ligy.school.zuul.filter;
    
    import com.netflix.zuul.ZuulFilter;
    import com.netflix.zuul.exception.ZuulException;
    import org.springframework.stereotype.Component;
    
    @Component
    public class AuthFilter extends ZuulFilter {
        public String filterType() {
            //pre 请求前面  post请求后面  error发生错误时  //route 在路由请求时被调用
    
            return "pre";
        }
    
        public int filterOrder() {
            //执行顺序 0 1 2  最先执行的是0,小的先执行
            return 0;
        }
    
        public boolean shouldFilter() {
            //开关:true 打开 false:关闭
            return true;
        }
    
        public Object run() throws ZuulException {
            //返回Object 就等于放行
            System.out.println("过滤器,执行了");
    
            return null;
        }
    }

    2.丢失请求头:Authorization

     

     

    3.转发请求头:Authorization

    
    
    public Object run() throws ZuulException {
            //返回Object 就等于放行
            System.out.println("过滤器,执行了");
    
            RequestContext context = RequestContext.getCurrentContext();
            HttpServletRequest request = context.getRequest();
            String authorization = request.getHeader("Authorization");
            System.out.println("zuul:authorization:" + authorization);
    
            if (authorization != null && !"".equals(authorization)) {
                //转发头
                context.addZuulRequestHeader("authorization", authorization);
                System.out.println("zuul:转发头:authorization:" + authorization);
                return "ok";
            }
    
            context.setResponseStatusCode(401);
            context.setResponseBody("权限校验失败");
            context.setSendZuulResponse(false);//禁止通行
            context.getResponse().setContentType("text/html;charset=utf-8");
            return null;
        }
    
    
    
    
    

     

     问题:转发后, 依然拿 不到头。

    解决方法:

    #配置不过滤所有头
    zuul.sensitive-headers=""

    4.使用场景:验证权限

    public Object run() throws ZuulException {
            //返回Object 就等于放行
            System.out.println("过滤器,执行了");
    
            RequestContext context = RequestContext.getCurrentContext();
            HttpServletRequest request = context.getRequest();
            String authorization = request.getHeader("Authorization");
            System.out.println("zuul:authorization:" + authorization);
    
            if (authorization != null && !"".equals(authorization)) {
                //转发头
                context.addZuulRequestHeader("authorization", authorization);
                System.out.println("zuul:转发头:authorization:" + authorization);
                return "ok";
            }
    
            context.setResponseStatusCode(401);
            context.setResponseBody("权限校验失败");
            context.setSendZuulResponse(false);//禁止通行
            context.getResponse().setContentType("text/html;charset=utf-8");
            return null;
        }

    天生我材必有用,千金散尽还复来
  • 相关阅读:
    小程序 阻止区域冒泡
    全国地址 一级处理
    新项目
    JDK环境变量的配置1
    用DOS命令来运行Java代码
    Myeclipse详细使用教程
    ​'JAVAC' 不是内部或外部命令的解决方法
    怎么检测JDK环境变量是否配置正确
    JDK环境变量的配置
    JDK安装图解
  • 原文地址:https://www.cnblogs.com/ligenyun/p/15808730.html
Copyright © 2020-2023  润新知