Python Flask 认证

2024 年 8 月 29 日 | 阅读 3 分钟

简介: Flask-Login 为 Flask 提供了用户会话管理。它处理登录、注销和长期存储用户会话的常规任务。几个月前,我厌倦了推广我的书的数字商品收费服务,并决定自己写。几个小时后,一个“Bull”诞生了。这是一个用 Flask 和 Python 编写的小应用程序,事实证明非常适合实现。它始于一个简单的功能。

客户在他的 Stripe JavaScript 弹出窗口中输入了他的信息,Bull 记录了他的电子邮件地址,以创建他的特定购买身份,将用户匹配到购买的内容。

在过去,需要输入完整的姓名和地址(我都没有使用)并在收费处理器的网站上创建账户,这极大地降低了效率。

我想找出由于复杂的订购流程而损失了多少销售额。然而,这绝对是一笔划算的交易。在 Bull 中,从点击电子书销售页面的“立即购买”按钮到阅读电子书的时间约为 10 秒。客户很喜欢。

Flask-Login 的优点: Flask-Login 的优点如下:

  1. 完成了通常棘手的“记住我”功能。
  2. 保护用户的会话不被 cookie 小偷窃取。
  3. 将活动用户的 ID 存储在 Flask 会话中,以便于登录和注销。
  4. 可以限制视图仅对已登录(或未登录)的用户可见。(login_required)

Flask-Login 的缺点: Flask-Login 的缺点如下:

  1. 处理除“已登录或未登录”之外的权限。
  2. 处理用户注册或账户恢复。
  3. 强制使用特定的数据库或其他存储方法。您需要对如何加载用户负全部责任。
  4. 限制使用用户名和密码、OpenID 或其他身份验证方法。

如何在 Flask 身份验证中添加用户?

我决定 Bull 应该能够显示一个“销售概览”页面,其中包含至少基本的销售数据(交易信息、随时间变化的销售图表等)。

为此(安全地),我的小型 Flask 应用程序。

然而,我只需要支持她的一个“管理员”用户,她有权查看报告。幸运的是,正如经常发生的那样,已经有一个第三方包可以处理这个问题。Flask-Login 是一个 Flask 扩展,允许用户进行身份验证。您只需要一个用户模型和一些简单的函数。

什么是 Flask 生态系统?

我能够快速地将此功能添加到我的网页,这得益于丰富的现有 Flask 扩展。最近,我想创建一个 Web 应用程序,其中包含一个讨论论坛等功能。

Django 有复杂的论坛应用程序,需要花费大量时间才能启动并运行。但是,它们需要与我选择的身份验证软件更好地配合。

没有理由将这两个应用程序配对在一起。然而,它们确实配对了。Flask 使得将正交的应用程序组合成更大、更复杂的包变得容易,就像你在函数式语言中组合函数一样。

例如,请查看 Flask 论坛。在构建论坛时,我们使用了以下 Flask 扩展:

  1. Flask-Script 用于基本命令
  2. Flask-Security 用于身份验证
  3. Flask-Admin 用于数据库管理
  4. Flask-DebugToolbar 用于调试和性能分析。
  5. Flask-Assets 用于资源管理
  6. Flask-Markdown 用于论坛帖子
  7. Flask-SQLAlchemy 用于数据库查询

考虑到这个长长的列表,几乎可以肯定每个应用程序都可以协同工作而不产生相互依赖(或者说,如果你来自 Django,这一点就更好了)。但是,Flask 扩展通常遵循 Unix 的“做好一件事”的哲学。我还没有遇到过一个我认为是“臃肿”的 Flask 扩展。

结论: 尽管我的用例和实现相对简单,但 Flask 最棒的地方在于它能让简单的事情变得更容易。如果某件事看起来应该很简单,并且不需要花费很多时间,那么在 Flask 中,这通常是真的。

我在不到一个小时的时间里就为我的收费处理器添加了一个经过身份验证的管理员部分,而且没有用到任何“魔法”。我知道一切是如何工作的,并且是如何组合在一起的。


下一个主题傅里叶变换 Python