@ flask_login.login_required无法正常工作

时间:2019-05-03 14:09:39

标签: python-3.x firebase flask firebase-realtime-database flask-login

我正在使用flask_login在我的烧瓶应用程序中实现身份验证

这是启用 unauthorized_handler login_required 的方法

@login_manager.unauthorized_handler
def unauthorized_handler():
    return redirect(url_for('login'))
# use decorators to link the function to a url

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

我正在使用Firebase作为后端服务

@app.route('/login', methods=['GET', 'POST'])
def login():
    auth = firebase.auth()
    if request.method == 'POST':
        try:
            user = auth.sign_in_with_email_and_password(request.form['email'], request.form['password'])
            if user != None:
                return redirect(url_for('profile'))
        except requests.exceptions.HTTPError as e:
            response = e.args[0].response
            error = response.json()['error']['code']
            return redirect(url_for('home'))
    return render_template('login.html')

问题是我登录(成功)后,应用程序会自动重定向到/login网址,而不是/profle

我尝试关闭调试模式,然后再打开仍无法正常工作。

1 个答案:

答案 0 :(得分:0)

可能是发生双重重定向的情况,您首先被重定向到配置文件,然后login_required装饰器开始将您重定向回登录,因为从{{1}的角度来看}您尚未登录。

您可能已经从firebse中检索了用户凭据,但是使用flask_login还必须调用login_user函数。 (另请参见烧瓶登录页面的Login Example