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
相关产品推荐
相关产品推荐

