烧瓶重定向不起作用

时间:2014-10-08 22:21:52

标签: python flask

我正在使用烧瓶。这是我的登录功能:

@app.route("/", methods=["GET", "POST"])
def login():
if request.method == "POST" and "imei" in request.form and "password" in request.form:
    imei = request.form["imei"]
    password = request.form["password"]
    worked, name = checkDB(imei, password)
    if worked:
        uid = hashlib.sha256(imei.encode('utf-8')).hexdigest()
        u = User(imei, name, password, uid)
        USERS[uid] = u
        login_user(u)
        #return request.args.get("next")
        return redirect(url_for("analyzer")) #THIS DOESENT WORK
    else:
        return redirect(url_for("login") + "?failure=true")
elif request.method == "GET" and request.args.get("failure"):    
    return render_template("auth.html", fail="true")
else:
    return render_template("auth.html", fail="false")

当该行尝试触发时(标记为此操作的那一行),它会重定向到:/?next=%2Fwebike%2Fanalyzer

分析仪很简单:

@app.route('/analyzer', methods=['GET'])
@login_required
def analyzer():
    return render_template('index.html')

我做错了什么?如果用户名和密码错误,一切都按预期工作。

1 个答案:

答案 0 :(得分:0)

登录无法正常运行。您已成功重定向到/analyzer,但由于@login_required装饰器而将其重定向回您的登录方式,并将分析器方法网址添加为next参数。

u = User(imei, name, password, uid)

在这里,您没有执行查找,而是在创建一个新的User对象。您需要从数据库中获取用户并将 传递给login_user方法,而不是创建新对象。 Documentation for the method here