Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 密码重置激活链接_Python_Django - Fatal编程技术网

Python 密码重置激活链接

Python 密码重置激活链接,python,django,Python,Django,我有两种观点。 1) 用于用户注册。 2) 用于密码重置。 生成两个任务的激活链接并发送到邮件。 我第一次注册的激活链接工作正常。 当我为密码重置创建激活链接时,它不会在使用后过期 @csrf_protect def changing_password_confirmation(request, uidb64, token): try: uid = force_bytes(urlsafe_base64_decode(uidb64)) user = User

我有两种观点。 1) 用于用户注册。 2) 用于密码重置。 生成两个任务的激活链接并发送到邮件。 我第一次注册的激活链接工作正常。 当我为密码重置创建激活链接时,它不会在使用后过期

@csrf_protect
def changing_password_confirmation(request, uidb64, token):
    try:
        uid = force_bytes(urlsafe_base64_decode(uidb64))
        user = User.objects.get(pk=uid)
    except(TypeError, ValueError, OverflowError, User.DoesNotExist):
        user = None
    if user is not None and passord_reset_token.check_token(user, token):
        print('user is not None and passord_reset_token.check_token(user, token)')
        if request.method == 'POST':
            password1 = request.POST.get('password1')
            password2 = request.POST.get('password2')
            if password1 == password2:
                user.set_password(password1)
                user.save()
                return render(request=request, template_name='website/password_reset_complete.html')
            else:
                return HttpResponse('<h1>Password doesnt match</h1>')
        return render(request=request, template_name='website/password_reset_confirm.html')
    else:
        print('User', user)
        result = 'Activation link is invalid!'
        return render(request=request, template_name='website/password_reset_confirm.html', context={'result': result})
重置密码模板

{% extends "website/header.html" %}

{% block title %}Enter new password{% endblock %}

{% block content %}

{% if validlink %}
<h1>Set a new password!</h1>
<form method="POST">
    {% csrf_token %}
    <div class="form-group">
        Password: <input type="text" class="form-control" name='password1' placeholder="password" value=""/>
    </div>
    <div class="form-group">
        Repeat Password: <input type="text" class="form-control" name='password2' placeholder="confirm" value=""/>
    </div>
    <input type="submit" value="Change my password">
</form>

{% else %}
{{ result }}
{% endif %}

{% endblock %}```
{%extends“website/header.html”%}
{%block title%}输入新密码{%endblock%}
{%block content%}
{%if validlink%}
设置新密码!
{%csrf_令牌%}
密码:
重复密码:
{%else%}
{{result}}
{%endif%}
{%endblock%}```
首先,Django。我建议你使用它们,而不是自己写

您的哈希值仅随用户的
pk
处于活动状态
字段而变化,并且在用户重置密码后这些值不会改变

    return (
            six.text_type(user.pk) + six.text_type(timestamp) +
            six.text_type(user.is_active)
    )
Django,将用户的
密码
上次登录
包含在哈希中,以便在重置密码后更改

    return (
            six.text_type(user.pk) + six.text_type(timestamp) +
            six.text_type(user.is_active)
    )