Flask 页面权限控制:不同用户显示不同内容
在 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 著作权归作者所有。请勿转载和采集!