我想用 django 的身份验证执行以下操作:
- 记录错误的登录尝试
- 在“x”次错误登录尝试后暂时锁定帐户
- 记录成功登录。
我认为自定义身份验证后端将是解决方案。
我可以做我想做的大部分事情,但我想记录进行尝试的用户的 IP 和 REMOTE_HOST。
如何访问身份验证后端中的请求对象?
Thanks
身份验证后端可以采用任意数量的自定义参数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 的登录视图(或管理员登录),您将不会获得额外的信息。简而言之,您必须使用自己的自定义登录视图。
另外,自动锁定帐户时要小心:您允许某人故意锁定您的用户帐户之一(拒绝服务)。有一些方法可以解决这个问题。另外,请确保您的错误尝试日志不包含任何尝试的密码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)