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