我正在使用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
。
我尝试关闭调试模式,然后再打开仍无法正常工作。
答案 0 :(得分:0)
可能是发生双重重定向的情况,您首先被重定向到配置文件,然后login_required
装饰器开始将您重定向回登录,因为从{{1}的角度来看}您尚未登录。
您可能已经从firebse中检索了用户凭据,但是使用flask_login
还必须调用login_user
函数。 (另请参见烧瓶登录页面的Login Example)