首页 > 其他分享 >中间件验证

中间件验证

时间:2022-11-07 02:44:15浏览次数:55  
标签:ctime 验证 中间件 self request time msg history

from django.utils.deprecation import MiddlewareMixin
from django.http import JsonResponse


class AuthThrottle(MiddlewareMixin):
    VISIT_RECORD = {}
    history = None

    def allow_request(self, request):
        ip = request.META.get('REMOTE_ADDR')
        import time
        ctime = time.time()
        if ip not in self.VISIT_RECORD:
            self.VISIT_RECORD[ip] = [ctime, ]
            return True
        self.history = self.VISIT_RECORD.get(ip)
        while self.history and ctime - self.history[-1] > 60:
            self.history.pop()
        if len(self.history) < 5:
            self.history.insert(0, ctime)
            return True
        else:
            return False

    def wait(self):
        import time
        ctime = time.time()
        msg = 60 - (ctime - self.history[-1])
        return msg
    import json
    def process_request(self, request):
        if self.allow_request(request):
            pass
        else:
            msg = self.wait()
            msg = str(msg)[0:2]
            return JsonResponse({"code": 101, "msg": '我在中间件拦的你啊DSB还差%s秒才能执行' % msg},json_dumps_params={'ensure_ascii':False})

标签:ctime,验证,中间件,self,request,time,msg,history
From: https://www.cnblogs.com/tzmy/p/16864767.html

相关文章

  • 发送验证码
    PHP发送短信验证码 $phone=trim(input('phone',false)); if(strlen($phone)<10){ $this->error("手机格式错误"); } $code_send_time=time()-ses......
  • gin-图形验证码
    文档地址:https://mojotv.cn/go/refactor-base64-captcha1.在api接口文件中配置生成验证码的代码在user-web/api下面创建chaptcha.go文件packageapi//导入import(......
  • 登录/退出—token验证(路由导航守卫控制访问权)
    登录/退出—token验证(路由导航守卫控制访问权)如果不是要访问登录页先判断登录状态,不在登录状态的强制跳转到login登录页面登录功能登录login页面点击按钮绑定点击事......
  • Visual Components快速验证工厂重新制造和降低生产风险
    在日益激烈的工业竞争中,制造商的传统规划做法非常具有挑战性,这激发了制造商贡献和改造自己设备和资源的浪潮。尤其自新冠肺炎爆发以来,在这场全球健康危机的整个过程中,许多......
  • Vue表单验证插件Vue Validator使用方法详解
    https://www.jb51.net/article/110609.htmVue-validator是Vue的表单验证插件,供大家参考,具体内容如下Vue版本:1.0.24Vue-validator版本:2.1.3基本使用12345......
  • elementUI常用表单验证
     //this.$refs['form'].clearValidate();//1.取消验证          //this.$refs['form'].resetFields()//2.表单重置     ......
  • [架构之路-59]:目标系统 - 平台软件 - 基础中间件 - POSIX(可移植操作系统接口)与标准库
    目录​​第1章 POSIX(可移植操作系统接口)概述​​​​1.1什么是POSIX​​​​1.2 发布者-IEEE​​​​1.3标准的下载位置​​​​1.4标准的起源​​​​1.5 谁遵守这个......
  • 手机号验证码方式登录
    //给输入手机号的input框绑定一个焦点消失事件check_mobile(){if(!this.mobile)return;if(!this.mobile.match(/^1[3-9][0-9]{9}$/)){......
  • springboot web 自定义参数验证
    当需要前端必传某些参数的时候,可在代码里面校验,但是这样每一个方法都需要自己写代码验证。我们可以使用spring提供的@Validate1、单一参数验证接口是单一参数写在方......
  • NETCORE - ValidationAttribute 属性验证
    NETCORE-ValidationAttribute属性验证 创建.net6 webapi 项目                          引用:https://bl......