应用案例

1.做IP访问频率限制

  某些IP访问服务器的频率过高,进行拦截, 比如每分钟不能超过20次

2.URL访问过滤

  如果用户访问的是login视图,就允许请求

  如果访问其他视图, 需要检测是不是有session认证, 已经有了放行, 没有返回login,这样就不用在多个视图上写装饰器了,(添加白名单与黑名单)

  

限制访问请求次数的中间件简单实现

from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import HttpResponse, redirect, render
from django.urls import reverse class SessionAuth(MiddlewareMixin): # __count = 0
def process_request(self, request): # print('session_认证')
path = request.path
# print('path>>>',path)
# 白名单
allow_pass_urls = [reverse('login'), ]
# print('allow_pass_urls',allow_pass_urls)
if path in allow_pass_urls:
self.__count = 0
return None
else: ret = request.session.get('session_login')
if ret:
# username = request.session.get('user')
# self.__count += 1
# if self.__count >= 5:
# request.session.flush()
# return HttpResponse('丫请求的次数过多,滚犊子') return None
else:
return redirect(reverse('login')) # return HttpResponse('ok') def process_response(self, request, response):
# print('session_认证响应')
return response def process_response(self, request, response):
return response

django系列8.4--django中间件的可应用案例, 限制请求次数与时间的更多相关文章

  1. django系列8.1--django的中间件01 自定义中间件的5个方法

    一.Django中的中间件 Django中间件定义: Middleware is a framework of hooks into Django's request/response process ...

  2. django系列8.2--django的中间件流程

    Django请求流程图 请求到达中间件之后,先按照正序执行每个注册中间件的process_reques方法,process_request方法返回的值是None,就依次执行,如果返回的值是HttpRe ...

  3. django系列8.3.2--django中间件实现登录验证(2) 个人构想逻辑

    middleware.py from django.utils.deprecation import MiddlewareMixin from django.shortcuts import rend ...

  4. django系列 1 :python+django环境搭建 +mac提示找不到manage.py命令

    1.安装python3 2.设置python3的环境变量 3.进入命令行模式,输入 pip install django 1.10.3 4.验证是否安装完成 pip show django 5.dja ...

  5. Django系列目录

    一:搭建自己的博客系列  搭建自己的博客(一):前期准备  搭建自己的博客(二):创建表,创建超级用户  搭建自己的博客(三):简单搭建首页和详情页 搭建自己的博客(四):优化首页和详情页 搭建自己的 ...

  6. django系列8.3--django中间件实现登录验证(1)

    中间件版的登录验证需要依靠session,所以数据库中要有django_session表. urls.py from django.conf.urls import url from app01 im ...

  7. Django 系列博客(七)

    Django 系列博客(七) 前言 本篇博客介绍 Django 中的视图层中的相关参数,HttpRequest 对象.HttpResponse 对象.JsonResponse,以及视图层的两种响应方式 ...

  8. Django 系列博客(二)

    Django 系列博客(二) 前言 今天博客的内容为使用 Django 完成第一个 Django 页面,并进行一些简单页面的搭建和转跳. 命令行搭建 Django 项目 创建纯净虚拟环境 在上一篇博客 ...

  9. Django 系列博客(十六)

    Django 系列博客(十六) 前言 本篇博客介绍 Django 的 forms 组件. 基本属性介绍 创建 forms 类时,主要涉及到字段和插件,字段用于对用户请求数据的验证,插件用于自动生成 h ...

随机推荐

  1. 很好用的log4j

  2. Creating Self-Signed SSL Certificates

    http://weblogic-wonders.com/weblogic/2011/05/25/ssl-configuration-for-weblogic-server/ http://m-butt ...

  3. 在eclipse中使用maven

    现在一般的eclipse工具中都自带的有maven插件,我们使用自带的即可,但需要修改二个参数 具体设置为: 1.设置Installations 2.设置user settings

  4. maven使用阿里云maven库

    在maven\conf\settings.xml中的mirrors添加 <mirror> <id>nexus-aliyun</id> <name>Nex ...

  5. springmvc 请求无法到达controller,出现404

    今天在配置SpringMVC时,访问项目一直出现404,无法访问. 报错: The origin server did not find a current representation for th ...

  6. 【hdu4347】The Closest M Points 【KD树模板】

    题意 一个k维空间,给出n个点的坐标,给出t个询问,每个询问给出一个点的坐标和一个m.对于每个询问找出跟这个点最接近的m个点 分析 kd树的模板题. #include <cstdio> # ...

  7. 手游热更新方案xLua开源:Unity3D下Lua编程解决方案

    C#下Lua编程支持 xLua为Unity. .Net. Mono等C#环境增加Lua脚本编程的能力,借助xLua,这些Lua代码可以方便的和C#相互调用. xLua的突破 xLua在功能.性能.易用 ...

  8. R学习笔记-安装R和RStudio,注意RStudio的版本需要与操作系统版本匹配

    1.安装步骤:先安装R,再安装RStudio RStudio是R的集成开发工具,本身不带R环境. 2.从当前R的官网和RStudio下载的R和RStudio的版本分别为: A .For Windows ...

  9. CoderForces 689A Mike and Cellphone (水题)

    题意:给定一个手机键盘数字九宫格,然后让你判断某种操作是不是唯一的,也就是说是不是可以通过平移也能实现. 析:我的想法是那就平移一下,看看能实现,就四种平移,上,下,左,右,上是-3,要注意0变成8, ...

  10. TP5 通过shell建立PHP守护程序

    用 vim建立 /etc/init.d/keepalive文件 #!/bin/bash # chkconfig: 2345 10 90 # description: Start and Stop KE ...