8
我想做的事与Django的认证如下:后不正确的登录尝试 如何在django自定义身份验证后端访问请求?
- 登录不正确的登录尝试
- 暂时锁定帐户。
我认为自定义auth后端将是解决方案。
我可以做大部分我想做的事情,但我想记录尝试的用户的IP和REMOTE_HOST。
如何访问auth后端中的请求对象?
由于
我想做的事与Django的认证如下:后不正确的登录尝试 如何在django自定义身份验证后端访问请求?
我认为自定义auth后端将是解决方案。
我可以做大部分我想做的事情,但我想记录尝试的用户的IP和REMOTE_HOST。
如何访问auth后端中的请求对象?
由于
的认证后端可以采取任何数目的用于authenticate()
方法自定义参数。例如:如果你使用Django的登录视图(或管理员登录)
from django.contrib.auth import authenticate
def login(request):
# discover username and password
authenticate(username=username, password=password, request=request)
# continue as normal
,您:
class MyBackend:
def authenticate(self, username=None, password=None, request=None):
# check username, password
if request is not None:
# log values from request object
如果你调用自己的观点进行验证,您可以通过请求对象不会有额外的信息。简而言之,您必须使用自己的自定义登录视图。
此外,在自动锁定帐户时要小心:您允许有人故意锁定您的某个用户帐户(拒绝服务)。有办法解决这个问题。此外,请确保您的不正确尝试日志不包含任何尝试密码。
我扩展了ModelBackend - python不允许我重载方法吗?什么是实现这一目标的好方法?只需重命名'authenticate'方法并在我看来调用它? – Roger 2010-08-15 17:28:23
我需要在登录视图中输入什么内容?只需复制整个当前的contrib.auth登录视图?我不明白,因为该方法永远不会调用'验证'... – Roger 2010-08-15 20:10:47
你肯定可以在python中重载。 'contrib.auth'要求后端有一个'authenticate'方法,所以你必须这样称呼它。 – 2010-08-16 00:17:47