我已经声明了自己的安全管理器,并且在其中我试图使用 before_request 进行检查,然后在会话已过期的情况下重定向至登录页面。但是,每次会话过期并且运行before请求并尝试重定向应用程序时,我都会收到ERR_TOO_MANY_REDIRECTS错误。我知道为什么重定向太多(因为每个请求的请求之前重定向),所以我尝试了诸如 after_this_request 之类的替代方法,但是返回的结果相同。我确信我的问题在于使用before请求,但是到目前为止,我还没有遇到其他解决方案。
以下是我尝试过的多种代码组合之一:
def before_request(self):
logging.error(session)
if 'oauth' not in session:
logging.error("Stopping")
redirect_url = request.url_root.strip('/') + self.appbuilder.get_url_for_login
return redirect('https://.../logout redirect_uri=' + quote(redirect_url))
@after_this_request
def relogin(response):
if not current_user.is_authenticated():
logging.error("Not Authorized")
return response
else:
logging.error(session['oauth'])
g.user = current_user