zoukankan      html  css  js  c++  java
  • Spring Cloud微服务实战 打造企业级优惠券系统 4-8 自定义限流过滤器

    0    课程地址

    https://coding.imooc.com/lesson/380.html#mid=28557

    1    浓缩精华
    1.1  4.1
    2    个人关注
    2.1  4.1中的获取令牌的方法
    3    课程内容
    3.1
    4    代码演练
    4.1  限流过滤器demo
    package com.imooc.coupon.filter;
    
    import com.google.common.util.concurrent.RateLimiter;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.stereotype.Component;
    
    import javax.servlet.http.HttpServletRequest;
    
    /**
     * RateLimitFilter
     * 限流过滤器,可以用来限制流量,过滤ip等
     * @author 魏豆豆
     * @date 2021/6/9
     */
    @Slf4j
    @Component
    public class RateLimitFilter extends AbstractPreZuulFilter {
        //每秒最多可以获得两个令牌,取到令牌代表成功,取不到代表令牌满了
        RateLimiter  limiter = RateLimiter.create(2.0);
    
        @Override
        public Object continueRun() {
            HttpServletRequest request = context.getRequest();
            //限流ip
            if(!request.getRequestURI().contains("127.0.0.1")){
                log.error("ip校验不通过");
                return fail(401,"ip校验不通过");
            }else{
                //可以获取到令牌
                if(limiter.tryAcquire()){
                    log.info("获取令牌成功!");
                    return success();
                }else{
                    log.error("获取令牌失败");
                    return fail(402,request.getRequestURI()+"获取令牌失败");
                }
            }
        }
    
        /**
         * 课程没有规定限流过滤器和token过滤器顺序,但是我认为应该先执行限流过滤器,出于安全角度考虑
         * @return
         */
        @Override
        public int filterOrder() {
            return 0;
        }
    }
     
     
    诸葛
  • 相关阅读:
    Laravel框架中的event事件操作
    PHP魔术方法实例
    PHP 面向对象
    ThinkPHP中where()使用方法详解
    PHP常见错误提示含义解释
    php面向对象编程self和static的区别
    php文件路径获取文件名
    php三种无限分类
    php高精度计算问题
    转:JavaScript定时机制、以及浏览器渲染机制 浅谈
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/14296115.html
Copyright © 2011-2022 走看看