Flask 登录和 SQLAlchemy – 用户登录、身份验证系统

构建具有用户登录和身份验证系统的应用程序是当前Web 3.0时代的基本功能。学习使用 Flask 登录

基于用户和以客户为导向的商业模式在当今的商业模式中非常流行。与Web 2.0不同,Web 3.0强调去中心化,将更多的数据权限和数据管理权还给当前用户。因此,用户中心化的趋势正在兴起,而且它会变得更加重要。所以对于使用Flask构建应用程序来说,用户登录和认证系统是它必须具备的基本功能。今天介绍如何利用 Flask 登录管理器并在您的应用程序中构建一个登录管理器。

目录:Flask 登录系统

Flask 登录管理器安装和配置

该模块提供 Flask 应用程序中的用户会话管理。它处理登录、注销和长时间记住用户会话等常见任务。

基本上,Flask 登录管理器可以让您执行以下操作:

  1. 将活动用户的 ID 存储在会话中,让您轻松登录和注销。
  2. 让您将视图限制为登录(或注销)用户。
  3. 处理通常棘手的“记住我”功能。
  4. 帮助保护您的用户会话免遭 Cookie 窃贼窃取。
  5. 可能与 Flask-Principal 或其他授权扩展集成。

首先,安装 Flask 登录管理器非常简单。我们可以在计算机终端中输入pip3 install flask-login 。然后,通过执行以下三个步骤来使用 Flask 应用程序配置 Flask 登录:

1.导入flask登录模块

2. 启动 LoginManager 实例并与您的应用程序连接

3.定义load_user函数,返回user_id

使用 SQLAlchemy 和 Flask 登录 UserMixin 创建和配置用户数据库

第一,我们需要导入SQLAlchemy模块并使用flask应用程序对其进行配置

其次,创建一个User类,添加所需的数据列以及每个数据列的规格。

最后但并非最不重要的一点是,我们需要创建一个主动的 SQLAlchemy 数据库。在终端中,我们可以创建主动SQLAlchemy数据库。请使用您在 Flask 应用程序中创建的应用程序名称以及用于连接 Flask 应用程序的变量名称。我在这里使用应用程序和数据库。

用户注册

现在成分已准备就绪,可以开始为新用户建立注册路线来加入您的应用程序。

首先,用户注册必须要有一个路径。

@app.route("/registration", methods=['GET', 'POST'])

有关 Flask 路由和从 HTML 收集提交数据的更多详细信息,请查看这篇文章

https://www.easy2digital.com/automation/data/python-tutorial-26-create-a-shopify-bot-web-application-using-flask-and-heroku/

其次,通过引用我们之前创建的 User 类,我们需要将注册路径上表单中的新用户输入数据与我们的数据库列进行匹配。如果你的应用程序也有API程序,这里还需要添加token变量,并将其解码为新用户输入的密码。

new_user = User(email=email, username=username, password=generate_password_hash(password, method='sha256'), token=token.decode())

然后,我们可以添加 new_user 并使用commit()来确认它,并使用我们之前创建的 login_user 函数记住它。

关于Flask JWT API部署的更多细节,请参考这篇文章

https://www.easy2digital.com/automation/data/python-tutorial-54-utilize-flask-jwt-to-tokenizer-the-api-user-identity-and-authenticate-users/

Flask 登录用户、注销用户和当前用户

创建新用户后,Flask 提供了模块来方便开发人员构建登录页面、注销页面以及检测站点上的登录用户。

首先,我们需要从flask_login 导入模块。我将在下一节中讨论login_required。

登录用户

为了验证登录页面输入的用户登录信息,我们可以检查SQLAlchemy数据中的用户密码是否与访问者输入的密码匹配。

首先使用 User 类中的query.filter_by来匹配电子邮件地址。

然后,如果获取的电子邮件用户的密码与表单中的输入值匹配,则该用户已登录。login_user 可以在 log_out 之前的任何会话中记住该用户。

注销用户

为用户创建注销帐户的新路线

当前用户

这是一个超级有用的模块,因为它告诉应用程序谁正在访问该页面。如果您想为会员提供独家内容或区分未知用户和注册用户的内容。该模块方便您部署和构建功能。

return render_template("shopify.html", user=current_user)

为了检测现有用户,我们需要在每个路由的 render_template 中添加 current_user ,或者添加您想要在 Flask 应用程序中显示个性化内容的路由。

Login_required 装饰器

对于任何只对会员开放的路由,你需要在路由下添加login_required装饰器。以注销路由为例,如果用户尚未登录,则无法点击注销页面,您可以添加 Flask 消息来通知他们先登录。

@app.route("/logout")

@login_required

def logout():

logout_user()

return redirect(url_for('home'))

Flask 登录和身份验证的完整 Python 脚本

如果您对第 57 章的完整 python 脚本感兴趣 – 使用 Flask、SQLAlchemy 构建用户帐户登录和身份验证系统,请添加消息“第 57 章”来订阅我们的时事通讯。我们会立即将脚本发送到您的邮箱。

联系我们

我希望您喜欢阅读第 57 章 – 使用 Flask、SQLAlchemy 构建用户帐户登录和身份验证系统。如果您这样做了,请通过执行下列操作之一来支持我们,因为这总是对我们的频道有所帮助。

  • 通过 PayPal ( paypal.me/Easy2digital ) 支持并捐赠我们的频道
  • 订阅我的频道并打开通知铃Easy2Digital Youtube 频道
  • 关注并喜欢我的页面Easy2Digital Facebook 页面
  • 使用主题标签 #easy2digital 在您的社交网络上分享文章
  • 使用 Easy2Digital 10% OFF 折扣代码购买产品 ( Easy2DigitalNewBuyers2021)
  • 您订阅我们的每周通讯即可接收 Easy2Digital 最新文章、视频和折扣代码
  • 通过 Patreon 订阅我们的月度会员即可享受独家优惠 ( www.patreon.com/louisludigital )