Django - приостановка / деактивация аккаунта на N секунд - PullRequest
2 голосов
/ 23 октября 2019

В моем приложении Django, если пользователь вводит неправильный пароль более 7 раз, я хочу приостановить / деактивировать его учетную запись на 10 секунд.

Я выполняю оператор If, чтобы увидеть, был ли введен неправильный пароль более 7 раз, и это работает нормально.

Внутри оператора if я хочу установить пользователя. 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)

Ошибка, которую я получаю: Ошибка типа: невозможно сравнить смещениедата и время с учетом смещения

Кто-нибудь знает, как это исправить?

1 Ответ

1 голос
/ 23 октября 2019

Одним из способов является запрет пользователя во Front-end (то есть с помощью javascript, ....). Если вы также хотите добавить в бэкэнд, вы можете добавить поле datetime, такое как user.active_after, которое каждая модель должна быть активна только после этого времени.

Затем, если вы получили неправильный пароль, вы можете изменить это поле на:

current =  datetime.datetime.now()

# add 10 seconds to current time
user.active_after = current + datetime.timedelta(0,10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...