给Django Admin添加验证码和多次登录尝试限制的实现

为加强Django Admin的安全性,可以添加验证码和多次登录尝试限制的实现。下面就详细介绍这个过程,包括以下步骤:

  1. 安装所需依赖
    requirements.txt文件中添加以下两个依赖:
django-simple-captcha==0.5.12
django-axes==5.9.0

通过pip安装依赖:pip install -r requirements.txt

  1. 配置Django Simple Captcha
    settings.py文件中找到INSTALLED_APPS,添加captchaaxes
INSTALLED_APPS = [
    ...
    'captcha',
    'axes',
    ...
]

settings.py文件的最后添加以下内容:

CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.random_char_challenge'
CAPTCHA_LENGTH = 4
CAPTCHA_FONT_SIZE = 24
CAPTCHA_FONT_PATH = 'fonts/Monospace.ttf'
CAPTCHA_FOREGROUND_COLOR = '#333333'

AXES_LOGIN_FAILURE_LIMIT = 5
AXES_LOCK_OUT_AT_FAILURE = True
AXES_COOLOFF_TIME = timedelta(minutes=15)
  1. 配置Django Axes
    settings.py文件中添加以下配置项:
MIDDLEWARE = [
    ...
    'axes.middleware.AxesMiddleware',
    ...
]

AXES_PROXY_COUNT = 2
AXES_BEHIND_REVERSE_PROXY = False
AXES_VERBOSE = True
AXES_FAILURE_LIMIT = 3
AXES_USE_USER_AGENT = True
AXES_LOCKOUT_TEMPLATE = 'lockout.html'
  1. 配置Django Admin
    urls.py文件中找到urlpatterns,添加以下代码:
from django.urls import reverse_lazy
from django.contrib.auth.views import LoginView
from captcha.fields import CaptchaField

class CaptchaLoginView(LoginView):
    template_name = 'admin/login.html'
    form_class = AuthenticationForm

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['captcha'] = CaptchaField()
        return context

urlpatterns = [
    path('admin/login/', CaptchaLoginView.as_view(), name='login'),
    path('admin/', admin.site.urls),
]
  1. 创建模版文件
    admin文件夹下创建login.html文件,添加以下内容:
{% extends "admin/login.html" %}

{% block form_bottom %}
{{ captcha }}
{% endblock %}
  1. 运行测试
    启动Django服务并尝试登录Django Admin,可以发现验证码和多次登录尝试限制都已经生效。

示例1:多次登录尝试限制
假设AXES_LOGIN_FAILURE_LIMIT配置项为5,用户在5次登录尝试失败后就会被锁定。尝试登录失败5次后,再次尝试登录会提示“Account locked: too many login attempts. Please try again in 900 second(s).”

示例2:验证码验证
如果用户尝试登录次数没有达到限制,但是没有输入正确的验证码,尝试登录会显示“Invalid Verification Code”。此时必须重新输入验证码才能继续登录尝试。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:给Django Admin添加验证码和多次登录尝试限制的实现 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 讯飞智能键盘K710评测 离线语音输入1分钟语音打400字

    讯飞智能键盘K710评测 离线语音输入1分钟语音打400字 介绍 讯飞智能键盘K710是一款支持离线语音输入的键盘,可以实现语音打字。据官方宣传,用户可以通过K710,用1分钟的时间打出400字,而且不需要联网,毫秒级响应,准确率高达98%。那么,这款键盘是否真的如此好用呢?在这篇文章中,我们将对其进行评测,看看其具体表现如何。 购买和配置 K710是一款U…

    人工智能概览 2023年5月25日
    00
  • 详解Nginx中的重定向功能

    当需要将某个URL地址重定向到另外一个URL地址时,我们就需要使用重定向功能。Nginx是一款高效的Web服务器,它提供了多种重定向方法。本文将详解Nginx中的重定向功能,希望对你有所帮助。 一、Nginx中的重定向 1. 什么是重定向 重定向指的是当用户访问某个URL时,服务器将该URL重定向到另外一个URL的过程。重定向可以帮助我们更好的管理网站内容,…

    人工智能概览 2023年5月25日
    00
  • 详解如何通过Python实现批量数据提取

    下面是详解如何通过Python实现批量数据提取的完整攻略: 1. 确认数据提取源 首先,需要确定数据提取的源头,即数据来源。可能的数据源包括网站上的HTML页面、API接口、数据库或文件等。 2. 安装必要的Python库 批量数据提取通常需要使用Python的第三方库来简化开发工作。根据不同的数据源类型,需要选择不同的库。比较常用的库有: 对于HTML页面…

    人工智能概论 2023年5月25日
    00
  • iOS判断身份证号码是否正确的方法

    iOS判断身份证号码是否正确的方法 在iOS开发中,判断身份证号码是否正确是非常常见的需求。它涉及到身份证号码的规则校验和部分解析。以下是判断身份证号码是否正确的方法: 校验规则 首先,我们需要了解身份证号码的校验规则。根据国家标准《GB 11643-1999》规定,身份证号码共计18位,其中前17位为地区码和出生日期码,第18位为校验位。其中,校验位的计算…

    人工智能概论 2023年5月25日
    00
  • C++ OpenCV单峰三角阈值法Thresh_Unimodal详解

    C++ OpenCV单峰三角阈值法Thresh_Unimodal详解 介绍 本文主要讲解C++ OpenCV单峰三角阈值法Thresh_Unimodal的实现原理和使用方法。 单峰三角阈值法是一种图像二值化的方法,能够快速地将图像转换为黑白二值图像。 原理 单峰三角阈值法的实现原理是先对归一化直方图进行平滑处理,然后利用三角函数寻找直方图的峰值。找到峰值后,…

    人工智能概论 2023年5月24日
    00
  • 超好用的免费内网穿透工具【永久免费不限制流量】

    超好用的免费内网穿透工具【永久免费不限制流量】 什么是内网穿透 内网穿透是指将内网中的某个端口映射到公网的某个端口,使得公网访问该端口时,可以实现访问内网的某个服务。 推荐的内网穿透工具 推荐一款开源的内网穿透工具:frp。它具有以下优点: 跨平台支持,Mac/Windows/Unix/Linux都可以使用 免费、开源,不限制流量 带有开箱即用的Web管理界…

    人工智能概览 2023年5月25日
    00
  • 微信小程序 本地数据存储实例详解

    针对“微信小程序 本地数据存储实例详解”的完整攻略,我将从以下几个方面来进行讲解: 什么是微信小程序本地数据存储? 如何使用微信小程序本地数据存储? 微信小程序本地数据存储的实例示例说明。 1. 什么是微信小程序本地数据存储? 微信小程序本地数据存储是指将小程序中的数据保存在客户端本地,以方便下一次使用。它不仅可以减少小程序每次访问服务器的网络请求时间,还能…

    人工智能概论 2023年5月25日
    00
  • Python中的十大图像处理工具(小结)

    Python中的十大图像处理工具(小结) 本文将介绍Python中的十大图像处理工具,其功能包括图像增强、裁剪、滤波、分割和识别等,涉及的工具包括: Pillow OpenCV-Python scikit-image mahotas imageio SimpleCV pydicom imutils pyocr pytesseract 下面将对这些工具进行详细…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部