You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Axes生效但不存储访问尝试与失败记录问题求助

Django Axes 问题:Access attempts与Access failures始终为空

我是Stack、Django及Axes的新手,提前致歉。我正在开发一个支持用户创建功能的简易网站,已集成Django Axes。该工具可基于用户名和IP在多次失败尝试后锁定账户,Admin面板的Axes专属“Access logs”能生成日志,但Access attempts和Access failures始终为空。以下是相关代码配置:

users/views.py 代码

@axes_dispatch
def login(request):
    if request.user.is_authenticated:
        return redirect('home')

    if request.method == 'POST':
        form = UserLoginForm(request, data=request.POST)
        
        if form.is_valid():
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            user = authenticate(request, username=username, password=password)

            if user is not None:
                auth_login(request, user)
                messages.success(request, f'Welcome back, {username}!')
                return redirect('home')  # successful login redirect
            else:
                # 发送登录失败信号
                signals.user_login_failed.send(
                    sender=user.__class__,
                    request=request,
                    credentials={'username': username}
                )
                messages.error(request, 'Invalid username or password.')

        else:
            # 发送表单验证失败信号
            signals.user_login_failed.send(
                sender=None,
                request=request,
                credentials={'username': request.POST.get('username')}
            )
            messages.error(request, 'Invalid username or password.')

    else:
        form = UserLoginForm()

    return render(request, 'users/login.html', {'form': form})

users/urls.py 代码

urlpatterns = [
    path('login/', views.login, name='login'),
    path('logout/', views.logout, name='logout'),
    path('register/', views.register, name='register'),
    path('change_profile/', views.profile, name='change_profile'),
    path('change_password/', views.change_password, name='change_password'),
    path('lockout/', views.lockout, name='lockout'),
]

settings.py 中Axes相关配置

INSTALLED_APPS = [
    'axes',
]

MIDDLEWARE = [
    'axes.middleware.AxesMiddleware', #Axes中间件
]

AUTHENTICATION_BACKENDS = [
    #Axes必须放在首位
    'axes.backends.AxesStandaloneBackend',
    'django.contrib.auth.backends.ModelBackend',
]

AXES_FAILURE_LIMIT = 5
AXES_COOLOFF_TIME = timedelta(minutes=5)
AXES_RESET_ON_SUCCESS = True
AXES_LOCKOUT_CALLABLE = 'users.signals.custom_lockout_response'
AXES_LOCKOUT_PARAMETERS = ['username', 'ip_address']
AXES_LOCKOUT_URL = '/lockout/'

内容的提问来源于stack exchange,提问作者code_crusader

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 20:35:14