我正在使用Django-axes,并使用github上readme中描述的完全相同的步骤。我可以通过django视图登录和注销,但是如果通过主网站,则不会捕获任何失败的登录尝试。尽管如此,来自管理站点的失败登录尝试都被捕获得很好。我正在使用FailedLoginMiddleware,没有特定于管理员。我已经仔细检查了所有的设置和配置,但我仍然没有找到问题的根源。请帮忙。
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'axes.middleware.FailedLoginMiddleware',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'axes',
'django.contrib.admin',
)
这是项目urls.py:
from django.conf.urls.defaults import patterns, include, url
from django.contrib.auth.views import login, logout, password_change
from qs.forms import ValidatingPasswordChangeForm
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^login/$', login, {'template_name': 'auth/login.html'}),
(r'^logout/$', logout, {'redirect_field_name': '/login',
'template_name': 'auth/logged_out.html'}),
(r'^passw_change/$', password_change,
{'post_change_redirect': '/rage',
'template_name': 'auth/password_change.html',
'password_change_form': ValidatingPasswordChangeForm}),
(r'^passw_reset/$', 'views.rage_password_reset'),
(r'^passw_reset/done/', 'views.rage_password_reset_done'),
(r'^passw_reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'views.rage_password_reset_confirm'),
(r'^passw_reset/complete/$', 'views.rage_password_reset_complete'),
url(r'^$', 'be.views.main.index'),
url(r'^admin/', include(admin.site.urls)),
)
答案 0 :(得分:5)
我想不出你的配置无法工作的任何原因 - 我使用django-axes,我的设置与你的设置完全一样,并且工作正常。但是,您可以通过执行以下操作强制轴记录所有内容:
将axes.middleware.FailedLoginMiddleware
中的axes.middleware.FailedAdminLoginMiddleware
更改为settings.py
。 (FailedAuthLoginMiddleware
显然不适合你,所以不要使用它。)
修改urls.conf
:
...
from django.contrib.auth.views import login, logout, password_change
from axes.decorators import watch_login
...
urlpatterns = patterns('',
(r'^login/$', watch_login(login), {'template_name': 'auth/login.html'}),
...
这应该强制轴记录尝试 - 这样做也可以解释最初的问题是什么。
答案 1 :(得分:0)
我遇到了同样的问题,userena正在捕获登录信息。如上所述将“watch_login”添加到userna中的登录URL修复了问题。