给验证码链接增加失效时间(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')

 

用于忘记密码和注册时使用

posted @ 2019-04-24 18:09  梁少华  阅读(1082)  评论(0)    收藏  举报