Flask-HttpAuth和Flask-Login

vik*_*kin 10 authentication flask flask-login

我正在创建一个小型REST服务.我正在寻找不同的身份验证方法.对于我使用模块Flask-Login的站点.看来是会话认证.Flask-HttpAuth模块提供了http和摘要认证方法.我有点困惑.他们互相补充吗?什么是最好的使用原因是什么?

谢谢.

Mig*_*uel 40

对于REST服务,您不需要Flask-Login.通常在Web服务中,您不存储客户端状态(Flask-Login所执行的操作),而是对每个请求进行身份验证.Flask-HTTPAuth为您完成此任务.

仅当您的应用程序具有Web组件和REST API组件时,才会使用这两者.在这种情况下,Flask-Login将处理Web应用程序路由,Flask-HTTPAuth将处理API路由.

免责声明:我是Flask-HTTPAuth的作者.

  • 是的,对于API,每次请求都发送身份验证是很正常的.您可以使用提供更高安全性的用户/密码或令牌,因为可以撤消泄露的令牌.我在博文中展示了这两种方法. (4认同)
  • 嗯,其中一个图书馆的作者自己花时间提供答案,@ viktor.likin甚至懒得接受或赞成答案.感谢Miguel Grinberg提供的见解,请接受我的谦逊投票. (4认同)
  • 如果需要,您可以将用于API的相同令牌写入cookie,但是,行为仍然非常不同,因此您可能最好将令牌生成移动到Web应用程序和api都可以使用的公共模块访问.或者让Flask生成用户会话并使用Flask-Login作为Web应用程序,只为api留下令牌. (2认同)

Dra*_*agu 1

是的,它们是互补的。

您还可以查看 Flask-security,一个一体化的库:

https://pythonhosted.org/Flask-Security/

  • 基于会话的身份验证
  • 角色管理
  • 密码加密
  • 基本 HTTP 身份验证
  • 基于令牌的身份验证
  • 基于令牌的帐户激活(可选)
  • 基于令牌的密码恢复/重置(可选)
  • 用户注册(可选)
  • 登录跟踪(可选)
  • JSON/Ajax 支持