如何在 django 自定义身份验证后端访问请求?

2024-02-02

我想用 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(使用前将#替换为@)

如何在 django 自定义身份验证后端访问请求? 的相关文章

随机推荐