Я хочу сделать следующее с аутентификацией django:
Я думал, что пользовательский подлинный бэкенд будет решением.
Я могу сделать большую часть того, что я хочу, но я хочу зарегистрировать IP и REMOTE_HOST пользователя, предпринимающего попытку.
как я могу получить доступ к объекту запроса в подлинном бэкенде?
Спасибо
Серверная часть аутентификации может принимать любое количество настраиваемых параметров для метода 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 (или вход администратора), у вас не будет дополнительной информации. Проще говоря, вам придется использовать собственное пользовательское представление входа в систему.
Также будьте осторожны при автоматической блокировке учетных записей: вы позволяете кому-либо намеренно заблокировать одну из учетных записей вашего пользователя (отказ в обслуживании). Есть способы обойти это. Также убедитесь, что в вашем журнале неверных попыток нет паролей.