Python 中无需数据库的 Flask 登录


Flask 是一个轻量级的 Python Web 框架,提供各种工具和库来构建动态 Web 应用程序。在 Flask 中实现用户身份验证时,开发人员通常会转向传统的数据库系统。但是,在某些情况下,使用数据库可能是不必要的或过度设计,例如小型应用程序或快速原型设计。在这种情况下,在没有数据库的情况下实现 Flask 登录系统可以成为一个简单而有效的解决方案。通过使用内存数据结构和 Flask 的会话对象,开发人员可以创建一个基本登录系统,无需数据库即可存储用户信息。在本文中,我们将探讨在不依赖数据库的情况下实现 Flask 登录系统的方法,并在此过程中提供示例和见解。

设置 Flask

要开始设置 Flask,您需要在本地机器上安装它。幸运的是,由于 pip 包管理器(Python 的默认包管理器),安装 Flask 非常简单。要安装 Flask,请在命令行或终端中运行以下命令

pip install flask

此代码将开始下载和安装 Flask 以及任何必要的依赖项。

创建 Flask 应用程序

要开始在没有数据库的情况下实现 Flask 登录系统,我们首先需要设置一个 Flask 应用程序。请按照以下步骤操作

打开您喜欢的文本编辑器或集成开发环境 (IDE),并创建一个名为 app.py 的新文件。

在 app.py 文件的顶部,使用以下代码导入必要的模块

from flask import Flask, render_template, request, redirect, url_for, session

导入所需的模块后,创建 Flask 应用程序的实例。在导入语句下方添加以下代码

app = Flask(__name__)

通过实例化 Flask 类,我们创建了 Flask 应用程序对象,该对象将处理路由并管理请求。

接下来,为 Flask 应用程序设置一个密钥。密钥对于会话加密和维护应用程序的安全性至关重要。在应用程序实例创建下方添加以下代码行

app.secret_key = "your_secret_key"

将“your_secret_key”替换为您所需的密钥。确保为您的应用程序选择一个安全且唯一的密钥。

通过遵循这些步骤,您已完成了导入所需模块并在 app.py 中设置 Flask 应用程序的过程。此关键步骤为您的 Flask 登录系统(无需数据库)奠定了基础。您创建的 Flask 应用程序将使您能够处理路由、呈现模板和管理用户会话。

创建基本登录表单

“创建基本登录表单”步骤侧重于设计和集成负责处理 Flask 应用程序中登录功能的用户界面组件。这涉及设计一个 HTML 表单,允许用户输入其凭据(例如用户名和密码),然后提交这些凭据以进行身份验证。

以下是如何创建基本登录表单的示例

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    <form method="POST" action="{{ url_for('login') }}">
        <input type="text" name="username" placeholder="Username"><br>
        <input type="password" name="password" placeholder="Password"><br>
        <input type="submit" value="Login">
    </form>
</body>
</html>

实现登录逻辑

在此步骤中,我们专注于开发负责管理 Flask 应用程序中登录功能的代码。此代码对于验证用户的凭据以及在登录尝试成功时处理会话至关重要。让我们探讨实现过程

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        
        # Dummy user validation
        if username == 'admin' and password == 'password':
            session['username'] = username
            return redirect(url_for('home'))
        else:
            return render_template('login.html')
    else:
        return render_template('login.html')

以上代码说明了 Flask 应用程序中的 /login 路由,它可以处理 GET 和 POST 请求。在 login() 函数内部,我们首先检查请求方法是否为 POST。如果是,我们从登录表单中检索用户输入的用户名和密码。然后,我们通过检查用户名是否为“admin”以及密码是否为“password”来执行基本的虚拟验证。如果凭据有效,我们将用户名存储在会话中,并使用 redirect(url_for('home')) 将用户重定向到主页。如果凭据不正确,我们将再次呈现登录页面以允许用户重试。对于 GET 请求,将呈现相同的登录页面以最初显示登录表单。

实现主页

在 Flask 中实现主页时,我们希望创建一个路由,该路由将在用户成功登录后负责呈现页面。此页面将显示欢迎消息以及已登录用户的用户名,并提供注销选项。

以下是主页的示例代码

<!DOCTYPE html>
<html>
<head>
    <title>Home</title>
</head>
<body>
    <h1>Welcome, {{ session['username'] }}</h1>
    <a href="{{ url_for('logout') }}">Logout</a>
</body>
</html>

实现注销逻辑

在 Flask 应用程序中注销时,注销逻辑起着至关重要的作用。此逻辑负责处理用户的注销请求并采取必要的步骤来清除用户的会话数据。无论用户单击“注销”链接还是启动特定操作以注销,都会触发注销逻辑。

在 app.py 中,添加以下代码以处理注销路由

@app.route('/logout')
def logout():
    session.pop('username', None)
    return redirect(url_for('login'))

此代码从会话中删除“username”键,并将用户重定向回登录页面。

运行应用程序

在成功设置具有登录功能的 Flask 应用程序后,下一步是运行应用程序并见证其功能。

以下是如何运行应用程序的示例

python app.py

此命令告诉 Python 运行 app.py 文件,其中包含您的 Flask 应用程序代码。

输出可能如下所示

Running on http://127.0.0.1:5000/ (Press CTRL+C to

结论

最后,在没有数据库的情况下实现 Flask 登录系统为不需要扩展用户管理的应用程序提供了一种轻量级且简单的解决方案。通过利用 Flask 的会话对象和内存数据结构,开发人员可以创建功能性登录系统。这种方法非常适合小型应用程序和原型,其中不需要数据库的开销。但是,需要注意的是,此方法不适用于需要强大的安全性或复杂用户管理的应用程序。随着应用程序的扩展,建议过渡到基于数据库的身份验证系统。Flask 的灵活性允许开发人员根据特定需求调整其应用程序,使其成为使用或不使用数据库实现用户身份验证的宝贵工具。

更新于:2023 年 7 月 20 日

968 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告