我的网站拥有数千名注册用户。在有人从我的数据库窃取密码的不幸事件中,我希望有计划A 和计划B 。我猜计划B将改变所有用户密码(使用小型python脚本和随机密码生成器)并将这些新密码发送给用户。我可以轻松地做到这一点。
计划A(听起来更合适,我不知道该怎么做)将强制用户通过使旧密码过期来创建新密码,这是他们第一次在攻击后访问该页面。
Django有这样的功能吗?如何有效和快速地完成?
注意:目前我的User / UserProfile模型并未考虑到这种情况。
答案 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