Бэкэнд аутентификации может принимать любое количество пользовательских параметров для метода 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
Если вы вызываете функцию authenticate в своем собственном представлении, вы можете передать объект запроса:
from django.contrib.auth import authenticate
def login(request):
# discover username and password
authenticate(username=username, password=password, request=request)
# continue as normal
Если вы используете представление входа в систему django (или администраторалогин), у вас не будет дополнительной информации.Проще говоря, вам придется использовать свой собственный вид входа в систему.
Кроме того, будьте осторожны при автоматической блокировке учетных записей: вы позволяете кому-то сознательно блокировать одну из учетных записей вашего пользователя (отказ в обслуживании).Есть способы обойти это.Кроме того, убедитесь, что в журнале неверных попыток нет паролей.