zoukankan      html  css  js  c++  java
  • 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;
        }

    天生我材必有用,千金散尽还复来
  • 相关阅读:
    多媒体开发之图像---帧与场的区别
    Python之Python 安装环境搭建
    c/c++ c的第一个编译器
    多媒体开发之 H.264中NALU、RBSP、SODB的关系 (弄清码流结构)
    多媒体开发之h264中的sps---sps信息提取之帧率
    haproxy有关session的问题
    php的安装
    centos 6.5上部署jetty
    设置浏览器的颜色
    sed awk grep三剑客常用
  • 原文地址:https://www.cnblogs.com/ligenyun/p/15808730.html
Copyright © 2011-2022 走看看