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 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.