<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

       

      1. 自定義注解

      @Target({ElementType.METHOD})
      @Retention(RetentionPolicy.RUNTIME)
      public @interface RateLimit {
      
          //默認最大訪問次數
          int value() default 3;
      
          //默認時間窗口(秒)
          long duration() default 60;
      }

       

      2. 創建攔截器處理頻率邏輯

      @Slf4j
      public class RateLimitInterceptor implements HandlerInterceptor {
      
          private ConcurrentHashMap<String,Long> requestCountMap = new ConcurrentHashMap<>();
      
          @Override
          public boolean preHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull Object handler) throws Exception {
              if (handler instanceof HandlerMethod){
                  HandlerMethod handlerMethod = (HandlerMethod) handler;
                  RateLimit rateLimitAnnotation = handlerMethod.getMethod().getAnnotation(RateLimit.class);
                  if (rateLimitAnnotation != null){
                      long duration = rateLimitAnnotation.duration();
                      int maxRequest = rateLimitAnnotation.value();
                      String ipAddress = getClientIpAddress(request);
                      String key = ipAddress + ":" + request.getRequestURI();
      
                      //獲取上一次請求的時間戳
                      Long lastAccessTime = requestCountMap.getOrDefault(key, 0L);
                      //獲取當前請求的時間戳
                      long currentAccessTime = System.currentTimeMillis();
                      //計算時間間隔
                      long timeInterval = TimeUnit.MILLISECONDS.toSeconds(currentAccessTime - lastAccessTime);
                      //是否超過時間間隔
                      if (timeInterval < duration){
                          //檢查訪問次數是否超過限制
                          if (requestCountMap.getOrDefault(key + "_count",0L) > maxRequest){
                              response.getWriter().write("訪問頻率超過限制");
                              response.setStatus(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
                              return false;
                          }
                      }else {
                          //重置訪問時間和訪問次數
                          requestCountMap.put(key,currentAccessTime);
                          requestCountMap.put(key + "_count",0L);
                      }
                      //訪問次數 + 1
                      requestCountMap.put(key + "_count",requestCountMap.getOrDefault(key + "_count",0L) + 1);
                  }
              }
              return true;
          }
      
          private String getClientIpAddress(HttpServletRequest request) {
              // 獲取客戶端IP地址的方法實現,可以根據具體的需求自行實現
              // 例如,可以通過HttpServletRequest對象獲取IP地址
              // return request.getRemoteAddr();
              return "127.0.0.1"; // 這里僅作示例,假設IP地址為本地地址
          }
      }

       

      3. 添加攔截器

      @Configuration
      public class MyConfig  implements WebMvcConfigurer {
      
          @Override
          public void addInterceptors(InterceptorRegistry registry) {
              registry.addInterceptor(new RateLimitInterceptor());
          }
      }

       

      4. 在接口上使用注解

          /**
           * 通過id查詢項目任務書
           * @param id id
           * @return R
           */
          @Operation(summary = "通過id查詢", description = "通過id查詢")
          @GetMapping("/{id}" )
          @RateLimit
          public R getById(@PathVariable("id" ) String id) {
              return R.ok(prjAssignService.getByIdAssign(id));
          }

        在攔截器preHandler中,檢查上次訪問時間和當前時間的時間間隔,根據限制條件判斷是否允許繼續訪問,超過限制則返回對應信息

       

      posted on 2024-04-23 17:24  homle  閱讀(854)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 亚洲激情一区二区三区视频| 欧美日韩在线第一页免费观看| 国产真实野战在线视频| 国产无码高清视频不卡| 国产成人精品成人a在线观看| 欧美熟妇乱子伦XX视频| 老子午夜精品无码| 女人与牲口性恔配视频免费| av色蜜桃一区二区三区| 日韩精品区一区二区三vr| 免费a级毛片无码av| 狠狠躁日日躁夜夜躁欧美老妇| 成人3D动漫一区二区三区| 精品国产乱码久久久久久婷婷| 国产在线视频精品视频| 国产精品自拍三级在线观看 | 国产精品国产三级国快看| 亚洲爆乳少妇无码激情| 国产精品激情av在线播放| 国产人免费人成免费视频| 性欧美vr高清极品| 激情综合五月网| 中文字幕精品亚洲无线码二区| 一二三四日本高清社区5| 夜夜偷天天爽夜夜爱| 亚洲人成网站77777在线观看 | 亚洲中文字幕无码中字| 天堂a无码a无线孕交| 国产精品成人免费视频网站京东| 久热这里有精品免费视频| 久久精品国产亚洲精品2020| 宜良县| 亚洲精品日韩久久精品| 不卡一区二区国产在线| 女人与牲口性恔配视频免费| 国产av一区二区亚洲精品| 蜜臀av久久国产午夜| 国产乱子伦一区二区三区四区五区| 精品人妻av中文字幕乱| 成人啪精品视频网站午夜| 亚洲欧美国产免费综合视频|