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 强制密码过期的主要内容,如果未能解决你的问题,请参考以下文章

linux怎么设置密码过期时间

如何修改Linux密码过期问题

oracle密码过期怎么办,密码已经过期,而不是即将过期。

linux密码过期 程序会关闭吗

oracle open 密码过期

MySQL密码过期