Flask中怎么實(shí)現(xiàn)用戶認(rèn)證

小億
91
2024-05-10 18:04:56

在Flask中實(shí)現(xiàn)用戶認(rèn)證可以通過(guò)以下步驟:

  1. 安裝Flask-Login擴(kuò)展:使用Flask-Login擴(kuò)展可以方便地管理用戶的登錄狀態(tài)和認(rèn)證。
pip install Flask-Login
  1. 創(chuàng)建用戶模型:定義一個(gè)用戶模型來(lái)存儲(chǔ)用戶的認(rèn)證信息。
from flask_login import UserMixin

class User(UserMixin):
    def __init__(self, id):
        self.id = id
  1. 創(chuàng)建登錄視圖函數(shù):定義一個(gè)登錄視圖函數(shù)來(lái)處理用戶的登錄請(qǐng)求。
from flask import Flask, request, redirect, url_for
from flask_login import LoginManager, login_user

app = Flask(__name__)
login_manager = LoginManager(app)

@login_manager.user_loader
def load_user(user_id):
    return User(user_id)

@app.route('/login', methods=['POST'])
def login():
    user_id = request.form['user_id']
    user = User(user_id)
    login_user(user)
    return redirect(url_for('index'))
  1. 創(chuàng)建認(rèn)證裝飾器:定義一個(gè)認(rèn)證裝飾器來(lái)限制只有登錄用戶才能訪問(wèn)特定的視圖函數(shù)。
from flask import redirect, url_for
from flask_login import login_required

@app.route('/protected')
@login_required
def protected():
    return 'You are logged in!'
  1. 創(chuàng)建注銷視圖函數(shù):定義一個(gè)注銷視圖函數(shù)來(lái)處理用戶的注銷請(qǐng)求。
from flask import redirect, url_for
from flask_login import logout_user

@app.route('/logout')
def logout():
    logout_user()
    return redirect(url_for('index'))

通過(guò)以上步驟,你可以在Flask應(yīng)用中實(shí)現(xiàn)用戶認(rèn)證功能。

0