问题描述
我正在尝试制作一个两步验证系统,我想在注册页面上显示一个二维码供用户扫描,然后立即删除图像。
这是我目前想到的:
@app.route('/register',methods = ['POST','GET'])
def register():
with tempfile.NamedTemporaryFile(suffix=".png",dir="static/images") as qrimg:
form = RegisterForm(request.form)
username = form.username.data
password = form.password.data
twofactorpass = form.twofactor.data
twofactor = pyotp.random_base32()
twofactorkey = pyotp.TOTP(twofactor)
qrstring = twofactorkey.provisioning_uri(name='x',issuer_name="x")
qr = qrcode.make(qrstring)
qr.save(qrimg)
if request.method == "POST" and form.validate():
if twofactorpass == twofactorkey.Now():
return redirect(url_for("register"))
else:
return redirect(url_for("register"))
return render_template("register.html",form = form,img = os.path.basename(os.path.normpath(qrimg.name)))
我现在的问题是临时文件在呈现 HTML 之前删除了自己,但据我所知,“返回 render_template()”部分必须在最后。
那么有什么办法可以在 HTML 呈现后关闭临时文件?我愿意接受任何建议,因为我猜有更好的方法可以做到这一点。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)