gpt4 book ai didi

python - Flask login_required + 下一个 url 参数

转载 作者:可可西里 更新时间:2023-11-01 15:30:24 25 4
gpt4 key购买 nike

我的应用程序中有一个 protected View ,它只接受 POST 请求。

@app.route("/booking", methods=("POST", ))
@login_required
def booking():
arg1 = request.form.get("arg1")
arg2 = request.form.get("arg2")

当未经授权的用户试图访问此 View 时,我希望他们登录然后被重定向到这里。

现在,我的登录 View 如下所示:

@app.route("/login", methods=("GET", "POST"))
@login_required
def login():
do_login()
return redirect(request.args.get('next') or url_for('home'))

所以最终发生的是对 /booking 的 POST 请求(这是“下一个”参数),我得到一个 NOT ALLOWED 错误。

问题是 login()booking() 发出 GET 请求。我可以解决这个问题,但我不确定如何检索原始 POST从 /booking 形成参数?有什么想法可以解决这个问题吗?

最佳答案

我会通过提取数据并将其放入 session 中来解决这个问题。您可以删除 @login_required 装饰器并使用 current_user.is_authorized 在函数中检查它。参见 Flask SessionsFlask Login .

这样的东西可能对你有用,我没有测试过:

from flask import session
from flask_login import current_user

@app.route("/booking", methods=("POST", ))
def booking():
if not 'arg1' in session.keys() and not 'arg2' in session.keys():
session['arg1'] = request.form.get("arg1")
session['arg2'] = request.form.get("arg2")
# Now the data will persist in the session

if current_user.is_authorized:
# Do what you need...
else:
# Redirect to login, session will persist

关于python - Flask login_required + 下一个 url 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21682223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com