Authentication 烧瓶HttpAuth和烧瓶登录

Authentication 烧瓶HttpAuth和烧瓶登录,authentication,flask,flask-login,Authentication,Flask,Flask Login,我正在创建一个小型的休息服务。我正在寻找不同的身份验证方法。 对于站点,我使用模块Flask登录。似乎是会话身份验证。模块Flask HttpAuth提供http和摘要身份验证方法。我有点困惑。 它们相互补充吗? 使用什么更好?原因是什么 谢谢。是的,它们相辅相成 您还可以查看Flask security,这是一个一体式库: 基于会话的身份验证 角色管理 密码加密 基本HTTP身份验证 基于令牌的身份验证 基于令牌的帐户激活(可选) 基于令牌的密码恢复/重置(可选) 用户注册(可选) 登录跟

我正在创建一个小型的休息服务。我正在寻找不同的身份验证方法。 对于站点,我使用模块Flask登录。似乎是会话身份验证。模块Flask HttpAuth提供http和摘要身份验证方法。我有点困惑。 它们相互补充吗? 使用什么更好?原因是什么


谢谢。

是的,它们相辅相成

您还可以查看Flask security,这是一个一体式库:

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

对于REST服务,您不需要登录。通常在web服务中,您不存储客户机状态(Flask登录所做的),而是对每个请求进行身份验证。Flask HTTPAuth为您做这件事

只有在应用程序具有web组件和REST API组件时,才能同时使用这两种组件。在这种情况下,Flask Login将处理web应用程序路由,Flask HTTPAuth将处理API路由


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

您可以使用装饰程序以非常简单的方式为Flask设置基本身份验证,无需进一步的模块

请看:

使用flaskrestful,只需将
method\u decorators=[required\u auth]
添加到
资源
类属性中

您可以扩展上面的代码段,例如允许用户从数据库中检索


请注意,在REST体系结构中,请求是:您不使用会话,而是随每个请求一起发送标识令牌(请参阅)。

我查看了您关于REST的报告。似乎我应该总是发送登录密码到。我找到了关于会话身份验证的信息。我希望它存在。我开发我的自行车是为了确切地了解我需要什么。对不起,你的例子对我来说还不够。是的,对于API来说,每个请求都发送身份验证是很正常的。您可以使用用户/密码,也可以使用令牌,这提供了更高的安全性,因为泄漏的令牌可以被撤销。我在我的博客文章中展示了这两种方法。嗯,其中一个图书馆的作者自己花时间提供了答案,@viktor.likin甚至懒得接受或投票支持这个答案。谢谢米格尔·格林伯格提供的见解,请接受我谦虚的一票。@SJoshi:对不起,我不认为这是登录,这就是我误解你的原因。因此,您有一个用于API的“获取令牌”路由,您正在询问是否可以将其用于基于web的登录表单?提交凭证的方法将有所不同,您可能会对API使用JSON,对web应用程序使用标准表单编码。结果也不同。对于返回令牌的API,对于web应用,您需要在用户会话中记录登录状态,因为您无法轻松让浏览器发送令牌,但可以轻松让浏览器发送cookie。如果您愿意,您可以将API使用的相同令牌写入cookie,但行为仍然非常不同,因此,最好将令牌生成转移到web应用程序和api都可以访问的公共模块。或者让Flask生成一个用户会话,并使用Flask登录web应用程序,只为api留下令牌。我同意你的看法。我一直在寻找现成的解决办法。我可以自己做你所描述的事情。它似乎应该存在。