Я пытаюсь подсчитать количество неверных попыток входа в систему, используя метод user_login_failed_callback. Как показано в приведенном ниже коде, я пытаюсь получить доступ к предыдущему значению поля базы данных «failed_login_count» из метода «user_login_failed_callback». Я обновлю значение failed_login_count до failed_login_count + 1, а также обновлю дату и время до текущего времени.
В настоящее время я получаю доступ к «failed_login_count» из «user.get_profile ()». Я знаю, что не так. Не могли бы вы указать правильный способ доступа к полям модели BruteForceEntry failed_login_count.
Мои вопросы
Поэтому не могли бы вы сообщить мне, как я могу получить доступ к failed_login_count из базы данных и обновите существующее значение.
Как показано в приведенном ниже коде, я использую «BruteForceEntry.objects.filter» для обновления строки существующей базы данных. Так что это правильный способ обновления таблицы.
Как заблокировать учетную запись пользователя после более чем 10 неудачных попыток входа в систему.
Возможно пожалуйста, помогите мне.
class BruteForceEntry(models.Model):
user = models.ForeignKey(User, unique=True)
username = models.CharField(max_length=256, null=True)
data_time_of_last_unsuccessful_login = models.DateTimeField(auto_now=True, blank=True)
failed_login_count = models.IntegerField(default=0)
def __unicode__(self):
return '{0} - {1} - {2}'.format(self.username, self.data_time_of_last_unsuccessful_login, self.failed_login_count)
def __str__(self):
return '{0} - {1} - {2}'.format(self.username, self.data_time_of_last_unsuccessful_login, self.failed_login_count)
@receiver(user_login_failed)
def user_login_failed_callback(sender, credentials, **kwargs):
username = credentials['username']
user = User.objects.get(username=username)
profile = user.get_profile()
failed_login_count = profile.failed_login_count + 1
BruteForceEntry.objects.filter(username=username).update(data_time_of_last_unsuccessful_login=timezone.now(), failed_login_count=failed_login_count)