应用案例

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. Oracle数据库备份与恢复命令

    备份:exp  用户名/密码@实例 file="e:\databack\XX_%date%.dmp" log = "e:\databack\XX8_%date%log.t ...

  2. 记一次 .net core publish 之后找不到视图文件的问题

    周末将VS从15.3 升级到15.5 ,之后又将VS版本由社区版,升级为企业版. 于是问题来了: 项目publish 之后找不到视图文件了??? 问题很是蛋疼,后来仔细想了一下,也没有动什么东西.查看 ...

  3. Linux中shell变量$0,$?等含义

    linux中shell变量$#,$@,$0,$1,$2的基本含义: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行 ...

  4. 2015年传智播客JavaEE 第168期就业班视频教程03-ERP简介(2)

    资源管理这块的东西大家基本上能够猜个差不多了.下面描述描述计划.计划这个东西把企业资源这个东西提升了不只十倍二十倍了.ERP的核心是计划,但是这次我们做是不做计划的.今年我们是一个生产型企业,我们要开 ...

  5. DropDownList控件的使用方法

    1. 使用代码添加数据 <asp:DropDownList ID="DropDownList1" runat="server"> </asp: ...

  6. Windows c++程序的基本结构

    Windows c++程序的基本结构 1.一个完整的Windows应用程序通常由五种类型的文件组成 C语言源程序文件 头文件 模块定义文件 资源描述文件 项目文件 2.Windows应用程序构成基本框 ...

  7. USB相关注册表

    计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{ SYSTEM\\CurrentControlSet\\Control\\ ...

  8. win10 跳过max path 260限制

    参考: https://www.howtogeek.com/266621/how-to-make-windows-10-accept-file-paths-over-260-characters/ 注 ...

  9. asp.net 4高级程序设计( 第4版)文摘

    第一部分 核心概念 第1章 asp.net 简介 第2章 visual studio 第3章 Web窗体 3.2 web窗体处理阶段 页面框架初始化(page.init),用户代码初始化(page.l ...

  10. laydate的使用

    理论可以看看:http://blog.csdn.net/u013372487/article/details/50534034 下载包:链接:http://pan.baidu.com/s/1kUNQ6 ...