我有一种更好的方法,可以更好地满足我的需求。基本上,如果您查看flask-plugin的源代码,我会非常简单直接地扩展LoginManager,您会意识到有一个调用@before_request 有一个名为reload_user的方法,这就是我最终要做的
class CustomLoginManager(LoginManager):
def reload_user(self):
if request.headers.has_key('Authorization'):
ctx = _request_ctx_stack.top
ctx.user = User.get(token=request.headers['Authorization'])
return
super(CustomLoginManager,self).reload_user()
如果在我的标题中我传递了一个授权密钥,那么我将尝试使用这个密钥而不是基于会话的方法来加载,当然我需要通过签署密钥来为这种方法添加更多的安全层,但总的来说这就是我需要。
谢谢大家。
顺便说一句,您可以覆盖一堆其他方法,我强烈建议您看一下插件源,这样您就可以更深入地了解它的作用 644 行代码值得一读
https://github.com/maxcountryman/flask-login/blob/master/flask_login.py