2014-10-02 314 views
6

我正在创建一个小的REST服务。我正在寻找不同的身份验证方法。 对于我使用模块Flask-Login的站点。这似乎是会话身份验证。 Flask-HttpAuth模块提供http和摘要认证方法。我有点困惑。 它们是否相辅相成? 什么是更好的用途是什么原因?Flask-HttpAuth和Flask-Login

谢谢。

回答

1

是的,它们相互补充。

您还可以看看瓶的安全性,所有功能于一身的lib:

  • 基于会话的认证
  • 角色管理
  • 密码加密
  • 基本HTTP认证
  • 基于令牌认证
  • 基于令牌激活帐户(可选)
  • 基于令牌密码恢复/复位(可选)
  • 用户注册(可选)
  • 登录跟踪(可选)
  • JSON/AJAX支持
28

对于REST服务,您不需要Flask-Login。通常在Web服务中,您不存储客户端状态(Flask-Login所执行的操作),而是验证每个请求。 Flask-HTTPAuth为你做这件事。

只有当您有一个具有Web组件和REST API组件的应用程序时,才可以同时使用它们。在这种情况下,Flask-Login将处理Web应用程序路由,而Flask-HTTPAuth将处理API路由。

声明:我是Flask-HTTPAuth的作者。

+0

我看了你关于REST的报告。看来我应该总是发送登录密码。我发现关于会话认证。我希望它存在。我开发我的自行车来了解我需要的东西。对不起,但你的例子对我来说还不够。我稍后会重读。 – 2014-10-07 15:23:00

+3

是的,对于API来说,发送每个请求的认证是非常正常的。你可以使用用户/密码或者令牌,这些提供更多的安全性,因为泄漏的令牌可以被撤消。我在博客文章中展示了两种方法。 – Miguel 2014-10-08 05:43:22

+4

嗯,其中一个图书馆的作者自己花时间提供了答案,而@ viktor.likin甚至都懒得接受或赞同答案。感谢米格尔格林伯格提供的见解,并请接受我的谦虚投票。 – 2014-10-19 08:34:33

1

您可以使用修饰器以非常简单的方式为烧瓶设置Basic验证码。请参阅:http://flask.pocoo.org/snippets/8/

With 烧瓶宁静,只需将method_decorators = [required_auth]添加到Resource类属性。

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

请注意,在REST体系结构中,请求是stateless:您不使用会话,而是发送标识令牌以及每个请求(请参阅http://broadcast.oreilly.com/2009/12/principles-for-standardized-rest-authentication.html)。

+0

我同意你的意见。我一直在寻找一个现成的解决方案。我能够自己做你自己描述的。它似乎应该存在。 – 2014-12-18 12:03:31