微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django 通过单击电子邮件链接登录/验证用户?

如何解决Django 通过单击电子邮件链接登录/验证用户?

大家好,我正在创建一个自定义 EmployeeForm,其中的表单供业务管理员使用,以添加员工。这会在数据库中创建一个新用户 Account。为了让该员工访问平台,还为他们设置了一个临时的唯一密码。创建时,会向新员工帐户电子邮件发送一封电子邮件,向他们提供他们的电子邮件随机生成的密码。我还想包含一个链接,将它们直接发送到 Change password 视图。单击此链接后,我希望它登录用户,这样他们就不必自己转到登录页面,这样他们就已经通过身份验证/登录了,他们所要做的就是输入他们的新密码。

我想知道是否可以通过单击“更改密码”链接自动登录用户

我还想知道是否有一种可能的方法甚至不设置随机密码,并允许用户只需单击电子邮件链接,他们就可以自行设置初始密码。 (注意:密码不是必填字段,因此可以在没有初始密码的情况下创建员工帐户。)

class EmployeeForm(ModelForm):
    class Meta:
        model = Account # Inherits from AbstractBaseUser
        fields = ['email','first_name','last_name','phone_no',]

    def save(self,commit=True):

        """Generate temp PW,trigger email"""

        email = self.instance.email
        temp_pass =  get_random_string()
        self.instance.set_password(temp_pass)
        self.send_temp_password()
        # Authenticate User to Now Login
        authenticate(username=email,password=temp_pass)
        return super(EmployeeForm,self).save()

    def send_temp_password(self):
        domain = f'https://{Site.objects.get_current().domain}'
        subject = "Temporary Password/Reset Link"
        html_message = render_to_string('password_change.txt',{'domain': domain,'email': self.instance.email,'temp_pass': self.instance.password,})
        send_mail(subject,html_message,settings.DEFAULT_FROM_EMAIL,[self.instance.email,],fail_silently=True)

我想总的来说,我正在寻找有关最佳设计和安全性的方向,以便以最有效的方式进行设置。

非常感谢任何建议!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。