在 Flask 中,可以使用 Flask-Login 插件来实现不同页面的权限控制。下面是一个简单的实现示例:

from flask import Flask, render_template, request, redirect, flash, current_user
from flask_login import LoginManager, UserMixin, login_required, login_user, logout_user

app = Flask(__name__)
app.secret_key = 'secret_key'
login_manager = LoginManager()
login_manager.init_app(app)

# 模拟不同用户
class User(UserMixin):
    def __init__(self, username, password, role):
        self.username = username
        self.password = password
        self.role = role

    def get_id(self):
        return self.username

users = [
    User('admin', 'admin', 'admin'),
    User('user1', 'password1', 'user'),
    User('user2', 'password2', 'user')
]

# 登录验证回调函数
@login_manager.user_loader
def load_user(username):
    for user in users:
        if user.username == username:
            return user
    return None

# 登录页面
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        for user in users:
            if user.username == username and user.password == password:
                login_user(user)
                return redirect('/')
        flash('Invalid username or password')
    return render_template('login.html')

# 注销页面
@app.route('/logout')
@login_required
def logout():
    logout_user()
    return redirect('/login')

# 不同权限的页面
@app.route('/')
@login_required
def home():
    if current_user.role == 'admin':
        return render_template('admin.html')
    else:
        return render_template('user.html')

if __name__ == '__main__':
    app.run()

在上述示例中,我们首先定义了一个User类来模拟不同的用户,每个用户有一个角色属性来表示不同的权限。然后,我们使用 Flask-Login 的LoginManager来处理用户的登录和注销。在登录页面,我们使用 POST 请求来验证用户的用户名和密码,并使用login_user函数来登录用户。在注销页面,我们使用logout_user函数来注销用户。在主页上,我们使用current_user来获取当前登录的用户,并根据用户的角色来渲染不同的页面。


原文地址: http://www.cveoy.top/t/topic/pbX9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录