首页 > 解决方案 > Django中的电子邮件激活在不同的浏览器中失败

问题描述

我的应用程序有电子邮件激活。但是,当用户在一个浏览器中创建帐户并尝试从另一个浏览器验证链接时,激活链接会失败。错误消息是“激活链接无效。”

当用户尝试在同一浏览器中使用激活链接时,它通常会起作用。但是,有时它仍然会失败,我仍然会收到“激活链接无效”。基本上,我不知道为什么它有时会失败而不是其他人。

try:
    uid = force_text(urlsafe_base64_decode(uidb64))
    user = User.objects.get(pk=uid)
except(TypeError, ValueError, OverflowError, User.DoesNotExist):
    user = None
if user is not None and account_activation_token.check_token(user, token):
    .... do something
else:
    return HttpResponse('Activation link is invalid!')

这是我创建电子邮件的地方:

def activation_email(request):
    if request.user.is_authenticated:
        user=request.user
        message = render_to_string('email.html', {
                'user':user,
                'token':account_activation_token.make_token(user),
                'uid':urlsafe_base64_encode(force_bytes(user.pk)),
        })
        ....send mail
    else:
        return redirect('somewhere_else')

基本上,Django 无法识别用户。不知道为什么它有时会失败,我猜它在 if user.is_authenticated 语句中失败了。

标签: djangoactivation

解决方案


推荐阅读