python - 使用 django-axes 登录 Django

标签 python django django-login

我用 django 创建了一个网站。用户应该能够登录。登录 View 如下所示:

from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User
....
if request.method == 'POST':       
        username = request.POST['username']#get username
        password = request.POST['txtPwd']# and password 
        user = authenticate(username=username, password=password) #checking username and pwd
        if user is not None:
            if user.is_active:
                login(request, user)

但是有了这个“解决方案”,我无法处理暴力攻击。所以我环顾四周,发现了这个: Throttling brute force login attacks in Django

第一个答案很有帮助。我选择 django-axes 是因为 django-ratelimit 只计算调用 View 的次数。

但这是我的问题:当我尝试使用错误的密码登录时,它不算失败。 (仅在/admin 部分)。

我找不到将我的登录 View “添加”到 django-axes 的选项。

所以这是我的问题:

如何配置 django-axes 以处理登录 View 中的失败登录?

编辑: 这是我的设置文件:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'axes',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'axes.middleware.FailedLoginMiddleware'
)

...

AXES_LOCK_OUT_AT_FAILURE = False
AXES_USE_USER_AGENT = True
AXES_COOLOFF_TIME = 1
AXES_LOGIN_FAILURE_LIMIT = 50

最佳答案

默认情况下 django-axes 使用 django 的登录 View *(django.contrib.auth.views.login)。在中间件中,此 View 用 watch_login 装饰。

所以您可以通过两种方式解决您的问题:

  • 使用标准登录 View 。这样,django-axes 就不需要额外的设置了。
  • 使用 watch_login 装饰器装饰您的登录 View 。

例如:views.py

from axes.decorators import watch_login
...

@watch_login
def your_custom_login_view(request):
    ...

然后它将在@Ali Faizan 提到的基于类的 View 中像这样使用:

@method_decorator(watch_login, name='dispatch')
class your_custom_login_view():
     ...

关于python - 使用 django-axes 登录 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25760023/

相关文章:

jquery - Django:如何在jquery中访问JsonResponse字典?

python - 从 django-rest-framework 应用程序自动发布到 Facebook 页面

django - 登录在 django 中不起作用 用户无法登录

python - django 中的 LDAP 身份验证错误

python - Django - UnicodeEncodeError

python - 在azure ml studio环境中安装本地python库

python - 如何从旧数据框创建新数据框?

python - 如何使用 DetailView 中 PK(主键)字段以外的不同字段进行查询

python - 删除 pandas python 中的方括号以导出到 csv

django - 登录和重定向