给验证码链接增加失效时间(10分钟为例子)
这是数据库里验证码生成时的字段,自动添加为当前时间。
# 如果不去掉括号,就会根据EmailVeryfiRecord编译的时间来生成默认时间。去掉括号了才会根据class实例化的时间来生成 send_time = models.DateTimeField( default=datetime.now, verbose_name=u'发送时间')
这是在View层写的链接失效的代码
send_time = record.send_time now = datetime.now() duration = (now - send_time).seconds if duration > 600: return render(request, 'active_fail.html', {'msg': u'链接已超时'})
完整代码
class ResetPwdView(View): def get(self, request, reset_code): record = EmailVerifyRecord.objects.filter(code=reset_code).first() if record: send_time = record.send_time now = datetime.now() duration = (now - send_time).seconds if duration > 600: return render(request, 'active_fail.html', {'msg': u'链接已超时'}) modify_form = ModifyPwdForm() email = record.email return render(request, 'password_reset.html', {'email': email, 'modify_form': modify_form}) else: return render(request, 'active_fail.html')
用于忘记密码和注册时使用

浙公网安备 33010602011771号