12
  • 我一直在多个地方阅读,建议 Web 服务器应该是Stateles并且不共享架构。这有助于他们更好地扩展。

  • 这意味着每个请求都包含处理请求所需的所有信息。

  • 当您拥有需要身份验证的REST端点时,这会变得很棘手。

  • 我一直在研究 Flask 扩展执行此操作的方式,并将Flask Login扩展定义为

Flask-Login 为 Flask 提供用户会话管理。它处理登录、注销和长时间记住用户会话的常见任务。

  • 这似乎违背了构建无状态服务器的理念,不是吗?
  • 有什么更好的方法来构建无状态服务器,并通过 Python 或相关 Python 库通过 HTTP 标头提供身份验证?

PS:很抱歉没有在这里发布编程问题,这是一个设计问题,我不知道如何解决它,所以似乎有合适的人来回答这些问题。谢谢。

4

2 回答 2

3

Flask-Login 使用flask 的内置会话管理,默认情况下使用安全/签名的cookie,因此纯粹是客户端。

当然,如果需要,它可以支持服务器端会话,这是一个 redis 支持的会话存储示例。

于 2013-03-07T10:22:46.190 回答
2

我遇到了和你说的一样的问题。虽然我为此构建了一个简单的解决方案,但正在寻找一个更好的解决方案。我目前所做的是要求调用者(谁发送 http 请求)在 http 标头中提供一个“X-User-Info”,该值是一个令牌。当我收到请求时,我使用此令牌来获取用户身份(例如从 redis),并且以下所有授权和权限控制都基于此身份。身份验证只生成一个随机令牌,将其与用户信息一起保存到 redis 并将令牌本身返回给调用者。

于 2014-08-02T06:29:29.893 回答