Codebeispiel für die Django-Middleware, die Benutzerauthentifizierung und IP-Frequenzbegrenzung implementiert

不言
Freigeben: 2018-11-24 15:59:23
nach vorne
2631 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit den Codebeispielen der Django-Middleware zur Implementierung der Benutzerauthentifizierung und der IP-Frequenzbegrenzung. Ich hoffe, dass er für Sie hilfreich ist.

1. URL-Zugriffsfilterung

Die Benutzerauthentifizierung über Dekoratoren ist sehr praktisch, aber wenn Sie einige Funktionen hinzufügen, die eine Authentifizierung erfordern, müssen Sie Dekorationen erneut hinzufügen Durch die Implementierung durch Middleware müssen keine zusätzlichen Vorgänge hinzugefügt werden.

import re
LOGIN_URL = '/login/'
class MyLogin(MiddlewareMixin):
    def process_request(self, request):
        # 获取当前页面的路由
        url = request.get_full_path()
        path = request.path
        print(path)
        # 通过session判断是否登录
        is_login = request.session.get('is_login')
        # 判断当前页面是否是login页面
        if not re.match(path, LOGIN_URL):
            if not is_login:
                # 如果没有登录,重定向到login页面
                return redirect('/login/?next=%s' % url)

    def process_response(self, request, response):
        return response
Nach dem Login kopieren

2. Begrenzen Sie die IP-Zugriffshäufigkeit

Um bestimmte IP-Adressen für den Hochfrequenzzugriff zu verhindern An den Server können diese IPs eingeschränkt und abgefangen werden.

import time
class OverTime(MiddlewareMixin):
    def process_request(self, request):
        # 获取客户端IP地址
        IP = request.META.get('REMOTE_ADDR')
        # 获取该IP地址的值,如果没有,给一个默认列表[]
        lis = request.session.get(IP, [])
        # 获取当前时间
        curr_time = time.time()
        # 判断操作次数是否小于3次
        if len(lis) < 3:
            # 如果小于3次,添加本次操作时间
            lis.append(curr_time)
            # 保存
            request.session[IP] = lis
        else:
            # 如果本次操作时间减去第一次操作时间小于60秒,则不让其继续操作
            if time.time() - lis[0] < 60:
                return HttpResponse(&#39;操作过于频繁&#39;)
            else:
                # 如果大于60秒则交叉复制
                lis[0], lis[1], lis[2] = lis[1], lis[2], time.time()
                # 保存
                request.session[IP] = lis

    def process_response(self, request, response):
        return response
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonCodebeispiel für die Django-Middleware, die Benutzerauthentifizierung und IP-Frequenzbegrenzung implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!