Django(part42)--限制IP请求次数

网友投稿 296 2022-08-31


Django(part42)--限制IP请求次数

学习笔记,仅供参考,有错必纠

限制IP请求次数

这个Blog中,我们将使用中间件,实现强制某个IP地址只能向某个地址发送3次GET请求。

在做这个案例之前我们需要先学两个request的属性:

​​request.META['REMOTE_ADDR']​​ ,得到远程客户端的IP地址​​request.path_info​​ ,得到客户端GET请求的路由信息

现在,我们在主urls.py中创建路由:

urlpatterns = [ re_path(r'^admin/', admin.site.urls), re_path(r'^testlimit/$',views.test_limit),]

在主视图模块中增加视图函数:

def test_limit(request): return HttpResponse("我是测试页面... ...")

创建自动以中间键:

class VisitLimit(MiddlewareMixin): '''此中间件限制一个IP地址对应的访问/testlimit/的次数不能改过3次,超过后禁止使用''' visit_times = {} # 此字典用于记录客户端IP地址有访问次数 def process_request(self, request): ip_address = request.META['REMOTE_ADDR'] # 得到IP地址 if not re.match('^/testlimit/$', request.path_info): return None #继续请求 times = self.visit_times.get(ip_address, 0) print("IP:", ip_address, '已经访问过', times, '次!:', request.path_info) self.visit_times[ip_address] = times + 1 if times < 3: return None return HttpResponse('你已经访问过' + str(times) + '次,禁止再次访问!')

将我们刚创建的中间键进行注册:

MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'mymiddleware.checklogin.MyMiddleWare', 'mymiddleware.checklogin.VisitLimit',]

向127.0.0.1 已经访问过 0 次!: /testlimit/[24/Jun/2020 01:28:57] "GET /testlimit/ HTTP/1.1" 200 25

再访问2次127.0.0.1 已经访问过 1 次!: /testlimit/[24/Jun/2020 01:30:40] "GET /testlimit/ HTTP/1.1" 200 25IP: 127.0.0.1 已经访问过 2 次!: /testlimit/[24/Jun/2020 01:30:53] "GET /testlimit/ HTTP/1.1" 200 25

当我们第4次向127.0.0.1 已经访问过 3 次!: /testlimit/[24/Jun/2020 01:31:35] "GET /testlimit/ HTTP/1.1" 200 46


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ZooKeeper框架教程Curator分布式锁实现及源码分析
下一篇:Django(part37)--session(Django MVT)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~