как получить доступ к запросу в django пользовательском бэкенде аутентификации?

Я хочу сделать следующее с аутентификацией django:

  • Зарегистрируйте неправильные попытки входа в систему
  • Временно заблокируйте учетные записи после 'x' количество неправильных попыток входа в систему
  • Зарегистрируйте успешные логины.

Я думал, что пользовательский подлинный бэкенд будет решением.

Я могу сделать большую часть того, что я хочу, но я хочу зарегистрировать IP и REMOTE_HOST пользователя, предпринимающего попытку.

как я могу получить доступ к объекту запроса в подлинном бэкенде?

Спасибо

9
задан Roger 15 August 2010 в 05:53
поделиться

1 ответ

Серверная часть аутентификации может принимать любое количество настраиваемых параметров для метода Authenticate () . Например:

class MyBackend:
    def authenticate(self, username=None, password=None, request=None):
         # check username, password
         if request is not None:
             # log values from request object

Если вы вызываете аутентификацию в своем собственном представлении, вы можете передать объект запроса:

from django.contrib.auth import authenticate

def login(request):
    # discover username and password
    authenticate(username=username, password=password, request=request)
    # continue as normal

Если вы используете представление входа в систему django (или вход администратора), у вас не будет дополнительной информации. Проще говоря, вам придется использовать собственное пользовательское представление входа в систему.

Также будьте осторожны при автоматической блокировке учетных записей: вы позволяете кому-либо намеренно заблокировать одну из учетных записей вашего пользователя (отказ в обслуживании). Есть способы обойти это. Также убедитесь, что в вашем журнале неверных попыток нет паролей.

10
ответ дан 3 November 2019 в 01:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: