我正在建立一个django项目,我需要一个遵循我们用户政策的用户管理系统。需要在180天后强制用户更改密码。因此,我决定使用pinax / django-user-accounts。我有一个名为“帐户”的django应用,可自定义标准django身份验证行为-本质上是定义自定义模板。
密码过期后,django重定向到
/accounts/change-password/?next=account_password
,因此循环播放,并且我的Firefox中出现浏览器重定向错误。
我设置了django用户帐户:
ACCOUNT_PASSWORD_EXPIRY = 60*60*2 # seconds until pw expires
ACCOUNT_PASSWORD_USE_HISTORY = True
ACCOUNT_LOGIN_URL = 'accounts:login'
ACCOUNT_LOGOUT_REDIRECT_URL = 'accounts:logout'
ACCOUNT_PASSWORD_CHANGE_REDIRECT_URL = 'accounts:account_password'
SITE_ID = 1
我还尝试将ACCOUNT_PASSWORD_CHANGE_REDIRECT_URL硬编码为“ / accounts / change-password”。结果是一样的。
login_required-decorator已从django.contrib.auth.decorators更改为account.decorators。
我的帐户应用程序的urls.py是:
app_name = 'accounts'
urlpatterns = [
...
path(
'change-password/',
MyPasswordChangeView.as_view(),
name='account_password'
),
]
我创建了自己的密码更改视图,该视图继承自django.contrib.auth.views.PasswordChangeView:
class MyPasswordChangeView(PasswordChangeView):
template_name = 'accounts/password_change.html'
def get_success_url(self):
return '/'
目标是如果密码过期,则在每个请求上显示更改密码/页面。它已经准备好尝试到达那里,但是最终进入了这个重定向循环。