Django - 暂停或停用账户N秒钟

4 浏览
0 Comments

Django - 暂停或停用账户N秒钟

在我的Django应用程序中,如果用户输入错误的密码超过7次,则我想将他们的帐户暂停/停用10秒钟。

我执行一个If语句,以查看错误的密码是否已经输入了超过7次,并且这个很好地工作了。

在if语句内部,我想将user.is_active设置为False,以防止他们登录10秒钟。过了10秒钟后,我想将user.is_active设置回True,这样他们就可以再次尝试登录。

我如何实现这个功能?谢谢。

更新 -

views.py:

if user.active_after > current:
                    return JsonResponse({'message': 'Yes! Not locked'}, status=200)

models.py

active_after = models.DateTimeField(auto_now=True)

我收到的错误:

TypeError:无法比较offset-naive和offset-aware datetimes

有人知道如何解决这个问题吗?

admin 更改状态以发布 2023年5月21日
0
0 Comments

一种方法是在前端防止用户(即使用javascript等)。如果你也想在后台添加,可以添加datetime字段,例如user.active_after,每个模型应该只在那个时间之后活跃起来。

那么当你得到一个错误的密码时,你可以将该字段更改为:

current =  datetime.datetime.now()
# add 10 seconds to current time
user.active_after = current + datetime.timedelta(0,10)

0