zoukankan      html  css  js  c++  java
  • SpringCloud过滤filter

    目录

     配置文件 application.yml

    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8001/eureka
    server:
      port: 9001
    spring:
      application:
        name: zuul
    ##配置zuul网关
    zuul:
      routes:
        api-a:
          path: /member-zuul/**
          service-id: memeber-service
        api-b:
          path: /order-zuul/**
          service-id: order-service

     MyZuulFilter类

    package com.cloud.filter;
    
    import com.netflix.zuul.ZuulFilter;
    import com.netflix.zuul.context.RequestContext;
    import com.netflix.zuul.exception.ZuulException;
    import org.springframework.stereotype.Component;
    
    import javax.servlet.http.HttpServletRequest;
    import java.io.IOException;
    @Component
    public class MyZuulFilter extends ZuulFilter {
        /**
         * 过滤类型
         * @return
         */
        @Override
        public String filterType() {
            return "pre";
        }
    
        /**
         * 请求过滤顺序
         * @return
         */
        @Override
        public int filterOrder() {
            return 0;
        }
    
        /**
         *
         * @return
         */
        @Override
        public boolean shouldFilter() {
            return true;
        }
    
        @Override
        public Object run() throws ZuulException {
            //获取token参数
            RequestContext rc = RequestContext.getCurrentContext();
            HttpServletRequest request = rc.getRequest();
    
            String token = request.getParameter("token");
            if(token!=null){
                return null;
            }
            //表示不进行路由
            rc.setSendZuulResponse(false);
            rc.setResponseStatusCode(401);
    
            try {
                rc.getResponse().setContentType("text/html;charset=utf-8");
                rc.getResponse().getWriter().write("没有传递正确参数,请校验后重试~");
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    }

    启动类

    package com.cloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.zuul.EnableZuulProxy; @EnableEurekaClient @SpringBootApplication @EnableZuulProxy public class StartZuul { public static void main(String[] args) { SpringApplication.run(StartZuul.class,args); } }

    效果

    1、

    2、

  • 相关阅读:
    题解 CF577B 【Modulo Sum】
    题解 P2827 【蚯蚓】
    题解 P1219 【八皇后】
    flash小实验
    URL编解码
    速记:两个进程模拟模态窗口
    youtube weburl后缀
    给ListView的条目自绘边框
    flash全屏在Activex控件上和在Google chrome插件上的区别
    ListView的消息钩子
  • 原文地址:https://www.cnblogs.com/dabrk/p/12071843.html
Copyright © 2011-2022 走看看