如何实现无状态烧瓶 webapp
Posted
技术标签:
【中文标题】如何实现无状态烧瓶 webapp【英文标题】:how to implement stateless flask webapp 【发布时间】:2021-06-12 16:36:56 【问题描述】:我正在为一个无状态的 Flask 应用程序而苦苦挣扎。通常我使用烧瓶登录来处理所有用户管理。但是现在我需要做这个无状态的,因为应用程序应该在云上运行。所以它必须是无状态的。
我包含的 RestAPI 完美运行(我在那里使用令牌)。但是我怎么能处理前端的无状态部分呢? 如何获取请求中的用户信息?在无状态服务器上,我无法使用 clientsession,因为我无法在请求中验证它?我也不能使用我可爱的 current_user 变量:(
有什么帮助吗?
帕斯卡
【问题讨论】:
【参考方案1】:有几种类型的身份验证,Flask-Login 使用一种称为session authentication
的身份验证,如果你想让你的应用程序无状态,你应该使用token authentication
,如 OAuth2 或 JWT。看看Flask-JWT
、Flask-JWT-Extended
和Flask-OAuthLib
。
但这并不意味着您必须重构您的应用程序,您只需从您的云提供商负载均衡器中启用sticky session
功能即可。
查看以下文档以在 AWS 上执行此操作:https://docs.aws.amazon.com/elasticloadbalancing/latest/application/sticky-sessions.html
【讨论】:
在谷歌云运行中无法进行粘性会话。所以我必须使用其他图书馆之一。是否可以使用 Flask-JWT-Extended 来处理我使用 Flask-Login 所做的事情?喜欢直接在我的模板中使用current_user
?看来我必须自己实现像login_view
或login_message
这样很棒的东西?
我尝试在我的项目中实现Flask-JWT-Extended
。但是现在我在处理重定向时遇到了问题。我在重定向中添加了带有['X-JWT-TOKEN'
的标头。但如果我访问受保护的站点,它总是会向我发送"msg": "Missing Authorization Header"
以上是关于如何实现无状态烧瓶 webapp的主要内容,如果未能解决你的问题,请参考以下文章