zoukankan      html  css  js  c++  java
  • 中间件:一个用户1分钟访问不能超过3次


    #导入模块
    from django.utils.deprecation import MiddlewareMixin

    # 定义一个 访问记录的大字典
    VISIT_RECORD = {}
     
    # 自定义一个访问频率限制的中间件
    class Throttle(MiddlewareMixin):
     
        def process_request(self, request):
            # 1. 拿到用户请求的IP
            # print(request.META)
            ip = request.META.get("REMOTE_ADDR")
            
            # 2. 当前请求的时间
            now = time.time()
            
            # 3. 记录访问的历史
            if ip not in VISIT_RECORD:
                VISIT_RECORD[ip] = []
     
            history = VISIT_RECORD[ip]
            # [11:07:20, 10:07:11, 10:07:06, 10:07:01]
     
            #当本次访问与之前的访问超过60s,则清除之前的访问记录
            while history and now - history[-1] > 10:
                history.pop()
           
             # 判断用户在一分钟的时间间隔内是否访问超过3次
            if len(history) >= 3:
                return HttpResponse("访问过于频繁...")
            
      #把新的访问记录添加在列表的第一个
            history.insert(0, now)
  • 相关阅读:
    fedora20安装hadoop-2.5.1
    超简单fedora20(linux)下JDK1.8的安装
    解决A program file was not specified in the launch configuration.问题
    java中的四则运算
    spring util命名空间
    java中常用的数据加密算法
    C语言实现栈
    百度ueditor富文本编辑器的使用
    C#进程管理程序实现
    ABP领域层-仓储
  • 原文地址:https://www.cnblogs.com/nzd123456/p/9459537.html
Copyright © 2011-2022 走看看