Django如何为电子邮件激活链接生成自动激活密钥



我想知道如何生成一个自动激活密钥以连接到我的电子邮件激活链接这是发送的链接:http://localhost:8001/sign_up/60/subsribe/14/confirmEmail但为了更安全,我想发送以下内容:http://localhost:8001/sign_up/60/subsribe/14/confirmEmail/{activation_key}}

mail=EmailMultiAlternativesmail.attach_alternative('http://localhost:8001/sign_up/'+str(id_account)+'/subscribe/'+str(id_sub)+'/confirmEmail',"text.html")mail.send()

您可以使用Signer类来实现这一点。即

from django.core.signing import Signer
signer = Signer()
signed_value = signer.sign(profile.user.email)#gives 'email@email.com:signed_things', extract signed_things'
key = ''.join(signed_value.split(':')[1:])
#send out key as part of url

然后,您可以将密钥与用户配置文件一起存储,例如。当请求链接时,您可以执行以下操作:

profile = get_object_or_404(UserProfile, key=key)
signer = Signer()
if signer.unsign('{0}:{1}'.format(profile.user.email, key)) == profile.user.email:
profile.verified = True

最新更新