аутентификации бэкенд может принимать любое количество пользовательских параметров для метода 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
Если вы используете вид входа Джанго (или администратора входа), вы не будет дополнительной информации. Проще говоря, вам придется использовать свой собственный пользовательский вид входа.
Кроме того, будьте осторожны при автоматической блокировке учетных записей: вы позволяете кому-то сознательно блокировать одну из ваших учетных записей пользователя (отказ в обслуживании). Есть способы обойти это. Кроме того, убедитесь, что ваш журнал неправильных попыток не содержит попыток паролей.
Я расширяю ModelBackend - python не позволяет мне перегружать методы? Что было бы хорошим способом добиться этого? Просто переименуйте метод «authenticate» и позвоните, что на мой взгляд? – Roger
Что мне нужно, чтобы ввести вид входа? просто скопируйте весь текущий вход в аккаунт Contrib.auth? Я не понимаю, потому что этот метод никогда не вызывает «authenticate» ... – Roger
Вы можете наверняка перегрузиться в python. 'contrib.auth' требует, чтобы бэкэнды имели метод' authenticate', поэтому вам придется называть это. –