我有一个脚本,可以根据excel文件创建多个用户,以及向用户发送欢迎电子邮件的信号。我希望这封欢迎电子邮件还包括明文密码。我知道这不是一个好习惯,我应该向用户发送一个设置密码的链接,但遗憾的是,时间不在我身边。
有没有办法在post_save
信号中使用纯文本密码?
答案 0 :(得分:6)
在这里保存纯文本密码或使用post_save信号,不会那么明智。创建用户时使用以下方法:
new_password = User.objects.make_random_password()
user = User.objects.create_user(username=data.name, email=data.email, password=new_password)
user.send_welcome_mail(new_password) // custom instance method to send a mail and the send password as parameter
这应该可以解决问题。
答案 1 :(得分:1)
停下来思考一下,想出了最好的解决方案。我让脚本生成没有任何密码的用户,但使用user.active = False
,并且在信号内部,我正在生成密码,设置user.active = True
并使用密码发送电子邮件。这样,如果由于某种原因无法调用信号,就不会出现任何安全问题,用户将无法登录。
当我有时间时,会切换到更好的方法(向用户发送一次性重置密码链接)。