我正在尝试建立一个双因素认证系统,我想在注册页面上显示一个二维码供用户扫描,然后立即删除图像
以下是我到目前为止的想法:
@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)))
我现在的问题是tempfile在呈现HTML之前会删除自身,但据我所知,“return render_template()”部分必须在最后
那么,有什么方法可以在呈现HTML后关闭tempfile呢?我愿意接受任何建议,因为我猜有更好的方法来做到这一点
目前没有回答
相关问题 更多 >
编程相关推荐