Django的。如何使所有用户密码失效?

时间:2013-06-06 08:56:27

标签: django

我的网站拥有数千名注册用户。在有人从我的数据库窃取密码的不幸事件中,我希望有计划A 计划B 。我猜计划B将改变所有用户密码(使用小型python脚本和随机密码生成器)并将这些新密码发送给用户。我可以轻松地做到这一点。

计划A(听起来更合适,我不知道该怎么做)将强制用户通过使旧密码过期来创建新密码,这是他们第一次在攻击后访问该页面。

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

注意:目前我的User / UserProfile模型并未考虑到这种情况。

2 个答案:

答案 0 :(得分:5)

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

接下来,您可以让用户重置其密码。这也有built-in helpers and forms

答案 1 :(得分:1)

在我看来,你应该去B计划。检查Management Commands

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