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;
        }
    }
     
     
    诸葛
  • 相关阅读:
    第十五周作业
    十三周作业
    第十三周上机作业
    第十二周作业
    第十二周作业
    第十一周作业
    第十一周上机作业
    第十次上机作业
    第九周上机作业
    安卓第一周
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/14296115.html
Copyright © 2011-2022 走看看