• 中间件:一个用户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)
  • 相关阅读:
    jquery----->helloworld
    hibernate------->第一个程序
    spring使用jdbcTemplate和jdbcdaosupport和namedparameter
    spring--------------->AOP
    spring------>Helloworld
    JS全选
    表单重复提交
    session
    cookies
    83. Remove Duplicates from Sorted List
  • 原文地址:https://www.cnblogs.com/nzd123456/p/9459537.html
Copyright © 2020-2023  润新知