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

Posted

技术标签:

【中文标题】Django如何为电子邮件激活链接生成自动激活密钥【英文标题】:Django how to generate an automatic activation key for email activation link 【发布时间】:2016-10-15 00:45:38 【问题描述】:

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

mail = EmailMultiAlternatives("Confirmation d\'email pour finaliser votre inscripttion","pour finaliser votre inscription, veuillez Consulter le Lien ci-dessus",from_email, to=[email]) mail.attach_alternative('http://localhost:8001/sign_up/' + str(id_account) + '/subscribe/' + str(id_sub) + '/confirmEmail',"text/html") 邮件发送()

【问题讨论】:

【参考方案1】:

您可以使用 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

【讨论】:

以上是关于Django如何为电子邮件激活链接生成自动激活密钥的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Google App Signing 生成上传密钥?

生成注册激活密钥时如何防止冲突?

邮箱怎么激活

使用 myisam 将激活密钥存储在分隔表中

Wordpress 主题在链接上阻止 target="_blank"。如何为某些外部链接重新激活它?

如何为 WooCommerce 添加电子邮件验证功能