Django 德扬戈。如何使所有用户密码过期?

Django 德扬戈。如何使所有用户密码过期?,django,Django,我有一个有几千注册用户的网站。在不幸的情况下,当有人从我的数据库中窃取密码时,我希望有一个方案a和方案B。我想方案B将使用一个小型python脚本和随机密码生成器更改所有用户密码,并通过电子邮件将这些新密码发送给用户。我很容易做到 A计划听起来更合适,我不确定如何通过在攻击后用户第一次访问页面时使旧密码过期来强制用户创建新密码 Django有这样的功能吗?如何高效快速地完成 注意:我的用户/用户配置文件模型目前还没有考虑到这种情况 我认为你应该选择B计划。检查: 我认为你应该选择B计划。检查:

我有一个有几千注册用户的网站。在不幸的情况下,当有人从我的数据库中窃取密码时,我希望有一个方案a和方案B。我想方案B将使用一个小型python脚本和随机密码生成器更改所有用户密码,并通过电子邮件将这些新密码发送给用户。我很容易做到

A计划听起来更合适,我不确定如何通过在攻击后用户第一次访问页面时使旧密码过期来强制用户创建新密码

Django有这样的功能吗?如何高效快速地完成


注意:我的用户/用户配置文件模型目前还没有考虑到这种情况

我认为你应该选择B计划。检查:


我认为你应该选择B计划。检查:


您应该做的第一件事是停用所有用户,以便他们无法登录。一种方法是使用。这将使所有密码无效;或者可以设置为False。这将禁用用户批发


接下来,您可以让用户重置其密码。这方面也有很多方法。

您应该做的第一件事是停用所有用户,这样他们就无法登录。一种方法是使用。这将使所有密码无效;或者可以设置为False。这将禁用用户批发


接下来,您可以让用户重置其密码。也有相应的解决方案。

如果db需要清除会话集合/表,则用户的会话位于何处?您只需要从服务器上删除所有活动会话。我认为计划A比计划B好得多。您需要清除会话数据库并创建“忘记密码”视图或类似视图。同时,您只需清空数据库中的所有密码,等待用户重置。用户会话位于数据库中。@TimmyO'Mahony忘记密码功能听起来很合理。如果会话存储在数据库中+1@TimmyO'Mahony仅供参考,用户模型中的密码字段是必填字段。不能在此处设置空值。如果是db,则需要清除会话集合/表,则用户的会话位于何处?您只需要从服务器上删除所有活动会话。我认为计划A比计划B好得多。您需要清除会话数据库并创建“忘记密码”视图或类似视图。同时,您只需清空数据库中的所有密码,等待用户重置。用户会话位于数据库中。@TimmyO'Mahony忘记密码功能听起来很合理。如果会话存储在数据库中+1@TimmyO'Mahony仅供参考,用户模型中的密码字段是必填字段。你不能在那里设置空值。+1用于设置不可用密码的链接,我从来不知道。谢谢设置不可用密码。因此,让我们假设我已使所有密码不可用,并以某种方式迫使用户自动重定向到密码更改表单。新密码会再次可用吗?是的,如果您用其他密码替换不可用的密码,它将再次可用。+1用于设置不可用密码的链接,我从来不知道。谢谢设置不可用密码。因此,让我们假设我已使所有密码不可用,并以某种方式迫使用户自动重定向到密码更改表单。新密码是否可以再次使用?是的,如果用其他密码替换无法使用的密码,它将再次可用。
from django.core.management.base import NoArgsCommand
from django.contrib.auth.models import User

class Command(NoArgsCommand):
    help = _('Change password of all users.')
    def handle_noargs(self, **options):
        users = User.objects.all()
        for user in users:
            # generate random password
            random_pwd = 'some random password'
            user.set_password(random_pwd)
            user.save()
            # send email to user