是否有任何 django 应用程序可以在 30 天等特定时间间隔后强制使用户的密码过期?我正在使用 djangp 的 auth 并想扩展它或使用社区应用程序。
到目前为止我已经尝试过:
- 在用户配置文件中添加了一个字段,用于存储上次更新密码的日期。
- 扩展登录方法以检查此日期并将用户重定向到密码更改页面。
我感到困惑的是:
- 在更改密码之前阻止用户访问该站点。
- 用户不应该能够登录或只输入 url 来直接访问该页面。
请注意,我不想使用中间件,因为它会限制资源。
你似乎在正确的轨道上。设置最后一次更新密码的日期,检查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.
嗯,有 django-passwords-policies,http ://tarak.github.io/django-password-policies/topics/force.password.change.html