我正在使用烧瓶。这是我的登录功能:
@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')
我做错了什么?如果用户名和密码错误,一切都按预期工作。
答案 0 :(得分:0)
登录无法正常运行。您已成功重定向到/analyzer
,但由于@login_required
装饰器而将其重定向回您的登录方式,并将分析器方法网址添加为next
参数。
u = User(imei, name, password, uid)
在这里,您没有执行查找,而是在创建一个新的User对象。您需要从数据库中获取用户并将 传递给login_user
方法,而不是创建新对象。 Documentation for the method here