显示用户的错误尝试次数

时间:2019-07-12 11:13:40

标签: django django-models

在我的django应用中,我想表明用户尝试使用错误的密码登录3次。

我正在使用 django-brutebuster

我可以在自己的Postgres中看到一个名为 BruteBuster_failedattempt 的迁移表,该表具有以下列:

  • id
  • 用户名
  • IP
  • 失败
  • 时间戳

settings.py

Installed Apps:
    ...
    BruteBuster

Middleware
    ...
    BruteBuster.middleware.RequestMiddleware',

Block threshhold
   BB_MAX_FAILURES = 3 
   BB_BLOCK_INTERVAL = 3

我想在django模板上显示失败尝试的次数。

1 个答案:

答案 0 :(得分:1)

这只是一个模型,所以您可以

from BruteBuster.models import FailedAttempt
from django.db.models import Sum

total_failed = FailedAttempt.objects.filter(
    username=request.user.username
).aggregate(
    total_failures=Sum('failures')
)['total_failures']

但是这里可能会有一些问题:

  1. BruteBuster在这里跟踪每个用户名和每个IP的失败次数,因此我们需要对它们进行总结;
  2. 如果用户更改了用户名,则此FailedAttempt不再有记录,因此在这种情况下可能无法完美运行;和
  3. 如果有nu次失败尝试,则它将返回None,而不是0,但是您可以在末尾添加or 0以将None转换为{{1 }}。