前幾天有稍微介紹了一點點Flask Login,今天會接著繼續補充。
現在,我們需要告訴 Flask-Login
如何載入已登入的用戶。這是使用 @login_manager.user_loader
裝飾器來完成的。首先,透過前幾天完成的初始化Flask Login,接下來,我們使用 @login_manager.user_loader
裝飾器定義一個函數,該函數負責載入已登入的用戶:
@login_manager.user_loader
def load_user(user_id):
# 在這裡,你應該查詢用戶模型並返回對應的用戶對象
user = User.query.get(int(user_id))
return user
from flask import render_template, request, redirect, url_for
from flask_login import login_user
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
# 在這裡,應該要驗證用戶提供的用戶名稱和密碼
# 如果驗證成功,使用以下代碼登入用戶
# user = User.query.filter_by(username=username).first()
# if user and user.password == password:
# login_user(user)
# return redirect(url_for('profile'))
return render_template('login.html')
在這個示例中,當用戶提交表單時,我們獲取用戶提供的用戶名稱和密碼,然後進行驗證。如果驗證成功,我們可以使用 login_user 函數來登入用戶,然後將用戶重定向到他們的個人檔案頁面。
from flask_login import logout_user
@app.route('/logout')
def logout():
logout_user()
return redirect(url_for('login'))
這個視圖非常簡單,只需使用 logout_user
函數登出用戶,然後重定向到登入頁面。
使用 @login_required
裝飾器可以保護路由,只有已登入用戶才能訪問:
@app.route('/settings')
@login_required
def settings():
...
未登錄用戶如果嘗試訪問這個路由會被重定向到登錄頁面。
通過 Flask-Login 提供的這些功能,我們可以非常容易地在 Flask 應用程式中實現用戶登錄和授權功能。