Rog*_*ger 9 authentication django
我想用django的身份验证执行以下操作:
我认为自定义auth后端将是解决方案.
我可以完成我想要的大部分工作,但我想记录进行尝试的用户的IP和REMOTE_HOST.
如何在auth后端访问请求对象?
谢谢
Wil*_*rdy 10
身份验证后端可以为该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
Run Code Online (Sandbox Code Playgroud)
如果您在自己的视图中调用authenticate,则可以传递请求对象:
from django.contrib.auth import authenticate
def login(request):
# discover username and password
authenticate(username=username, password=password, request=request)
# continue as normal
Run Code Online (Sandbox Code Playgroud)
如果您使用的是django的登录视图(或管理员登录),则您将无法获得额外信息.简而言之,您必须使用自己的自定义登录视图.
此外,在自动锁定帐户时要小心:您允许某人故意锁定您的某个用户帐户(拒绝服务).有办法解决这个问题.此外,请确保您的错误尝试日志不包含任何尝试的密码.