Flask 从OpenID连接提供程序回调重定向后,无法访问当前\u用户
我正在使用openID提供程序对flask应用程序的用户进行身份验证。在身份验证网站上进行身份验证后,提供商向我的回调端点发送一个id_令牌,作为Flask 从OpenID连接提供程序回调重定向后,无法访问当前\u用户,flask,flask-login,Flask,Flask Login,我正在使用openID提供程序对flask应用程序的用户进行身份验证。在身份验证网站上进行身份验证后,提供商向我的回调端点发送一个id_令牌,作为POST请求携带用户信息 我解码这个令牌,创建用户对象并将其保存在缓存中。保存用户后,用户使用flask\u login.login\u user()登录。该函数将重定向到主页 @app.route("/opentoken", methods=['POST']) def openid_callback(): token = request.fo
POST
请求携带用户信息
我解码这个令牌,创建用户对象并将其保存在缓存中。保存用户后,用户使用flask\u login.login\u user()登录。
该函数将重定向到主页
@app.route("/opentoken", methods=['POST'])
def openid_callback():
token = request.form['id_token']
decoded_token = jwt.decode(token, verify=False)
preferred_username = decoded_token['preferred_username']
user = save_user(preferred_username, decoded_token)
login_user(user)
log.info(current_user) #That confirms the current_user has the user info
return redirect('/home')
预期的行为是,在重定向时,主端点将可以访问flask\u login.current\u user
。这应该发生,因为flask登录集成应该使flask在每次请求之前调用此函数
@app.login_manager.user_loader
def load_user(_id):
try:
user = users[_id]
return user
except KeyError:
return None
然而,实际的行为是不同的。重定向后,被调用的端点/home
无法访问当前用户
@home_bp.route('/home')
def home():
print(f"Current User: {current_user}") #This returns that the user is AnonymousMixin
return render_template(....)
然而,如果页面被刷新(直接调用端点),它能够选择当前用户
,并打印登录用户的信息
换句话说,在重定向时,不会调用login\u manager.user\u loader
flask login回调,但直接调用端点时会像往常一样调用它
我不确定我是否遗漏或误解了某些内容,或者是否存在导致这种行为的特殊错误