给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日

相关文章

  • Python3.6使用tesseract-ocr的正确方法

    Python3.6使用tesseract-ocr的正确方法 简介 在本文中,我们将详细讲解Python3.6使用tesseract-ocr的正确方法。tesseract-ocr是一个免费、开源的OCR引擎,可以将图像中的文本自动识别并转换为计算机可处理的文本。该OCR引擎非常适合Python这种高级编程语言,并且可以在Windows、Linux和MacOS等…

    人工智能概览 2023年5月25日
    00
  • win10下vs2015配置Opencv3.1.0详细过程

    以下是win10下vs2015配置Opencv3.1.0详细过程: 第一步:下载安装Opencv3.1.0 1.打开Opencv官网,下载Opencv3.1.0压缩包2.解压后将文件夹重命名为“opencv-3.1.0”并放在“C:\”盘根目录下3.添加系统环境变量: 右键“计算机” >> “属性” >> “高级系统设置” >&…

    人工智能概论 2023年5月24日
    00
  • cv2.imread 和 cv2.imdecode 用法及区别

    cv2.imread与cv2.imdecode都是OpenCV提供的图像读取函数。它们的作用是用于读取图像文件以获取图像数据,但是它们之间存在一些区别。 cv2.imread cv2.imread函数用于读取常见的图像格式,如 BMP、JPEG、PNG、PBM、PGM、PPM 和 TIFF 格式的图像。当使用cv2.imread函数读取图像时,函数的返回值是…

    人工智能概论 2023年5月25日
    00
  • 以tensorflow库为例讲解Pycharm中如何更新第三方库

    更新第三方库通常可以通过conda或pip工具进行,而在Pycharm中也可以通过简单的操作完成。本文以tensorflow库为例讲解如何在Pycharm中更新第三方库。下面是详细步骤: 步骤一:打开Pycharm设置 打开Pycharm,点击菜单栏中“File” -> “Settings” 或者快捷键“Ctrl + Alt + S” 打开设置面板。 …

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

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

    人工智能概览 2023年5月25日
    00
  • windows10在visual studio2019下配置使用openCV4.3.0

    下面是详细的“windows10在visual studio2019下配置使用openCV4.3.0”的完整攻略: 步骤一:下载与安装openCV 打开openCV的官网(https://opencv.org/)并下载openCV的最新版(当前为4.3.0版本)。 下载完毕后,将包含openCV的zip文件解压到本地任意目录(例如D:\OpenCV)。 步骤…

    人工智能概览 2023年5月25日
    00
  • 详解Python用户登录接口的方法

    详解Python用户登录接口的方法 本篇攻略介绍了在Python中实现用户登录接口的方法,具体包括以下步骤: 创建一个HTTP POST请求,包含用户提交的登录数据,比如用户名和密码 在后端服务器中对这些数据进行验证 如果验证通过,创建一个session来保持用户的登录状态 返回登录结果到前端 HTTP POST请求 在Python中,我们可以使用reque…

    人工智能概览 2023年5月25日
    00
  • Python个人博客程序开发实例信息显示

    Python个人博客程序开发实例信息显示 简介 这个项目是一个使用Python开发的博客程序,能够实现博客文章的创建、编辑、删除和显示等功能。 技术栈 Python Flask HTML CSS JavaScript 实现步骤 1. 创建Flask应用 首先,我们要创建一个Flask应用,用于处理用户的请求。可以使用以下代码创建Flask应用。 from f…

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