我正在@login_required
为我的应用程序中的某些路线使用 Flask-login 的装饰器。在未登录的情况下导航到这些路线时,我被重定向到登录页面。到现在为止还挺好。
重定向的 url 看起来像这样:/login?next=%2Fusers
看起来它对下一个参数进行了 url 编码,这是我在遇到的示例中没有看到的。登录后重定向回next
总是失败并回退到索引页面。我认为这是因为next
是 url 编码的。
我应该以不同的方式解决这个问题吗?我刚刚开始深入研究 Flask 框架并处理示例,所以我对做事的最佳方法知之甚少。
这是一个示例路线:
login_manager.login_view = 'login'
@app.route('users')
@login_required
def users():
return 'Test'
我的登录路线如下所示:
@app.route('/login')
def login():
error = None
next = request.args.get('next')
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
if authenticate_user(username, password):
user = User.query.filter_by(username=username).first()
if login_user(user):
flash("You have logged in")
session['logged_in'] = True
return redirect(next or url_for('index', error=error))
error = "Login failed"
return render_template('login.html', login=True, next=next, error=error)
在此先感谢您的帮助。