Django 强制密码过期
Posted
技术标签:
【中文标题】Django 强制密码过期【英文标题】:Django force password expiration 【发布时间】:2013-03-12 08:25:42 【问题描述】:是否有任何 django 应用程序可以在 30 天等特定时间间隔后强制使用户的密码过期?我正在使用 djangp 的 auth 并想扩展它或使用社区应用程序。
到目前为止我所尝试的:
-
在用户配置文件中添加了一个字段,用于存储上次更新密码的日期。
扩展登录方法以检查此日期并将用户重定向到密码更改页面。
我的困惑:
-
在更改密码之前阻止用户访问网站。
用户不能登录或直接输入网址来访问页面。
请注意,我不想使用中间件,因为它会限制资源。
【问题讨论】:
【参考方案1】:你似乎走在了正确的轨道上。设置最后一次更新密码的日期,检查timedelta是否大于30天,如果是则重定向到更改密码页面。如果 timedelta 大于 30 天,您的登录视图应该基本保持不变,除非用户实际上不会登录到请求对象。
from datetime import date, timedelta
from django.contrib.auth import authenticate, login
def my_view(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
if date.today() - user.password_date > timedelta(days=30):
# Redirect to password change page
else:
login(request, user)
# Redirect to a success page.
else:
# Return a 'disabled account' error message
else:
# Return an 'invalid login' error message.
【讨论】:
这是有道理的,马特。我会试试这个。谢谢 如何阻止用户访问其他视图?【参考方案2】:嗯,有 django-passwords-policies,http://tarak.github.io/django-password-policies/topics/force.password.change.html
【讨论】:
我尝试使用它,但它似乎不再维护。它不再与最新的 django 版本兼容(撰写此评论时为 2.1)以上是关于Django 强制密码过期的主要内容,如果未能解决你的问题,请参考以下文章