【问题标题】:Django force password expirationDjango 强制密码过期
【发布时间】:2013-03-12 08:25:42
【问题描述】:

是否有任何 django 应用程序可以在 30 天等特定时间间隔后强制使用户的密码过期?我正在使用 djangp 的 auth 并想扩展它或使用社区应用程序。

到目前为止我所尝试的:

  1. 在用户配置文件中添加了一个字段,用于存储上次更新密码的日期。
  2. 扩展登录方法以检查此日期并将用户重定向到密码更改页面。

我的困惑:

  1. 在更改密码之前阻止用户访问网站。
  2. 用户不能登录或直接输入网址来访问页面。

请注意,我不想使用中间件,因为它会限制资源。

【问题讨论】:

    标签: django passwords


    【解决方案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 版本兼容(撰写此评论时为 2.1)
    猜你喜欢
    • 2020-02-15
    • 1970-01-01
    • 2012-01-18
    • 2012-10-14
    • 2019-04-07
    • 2018-03-09
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多