在 Flask 中,可以使用 Flask-Login 插件来实现员工只能看到自己的数据,而领导可以看见全部数据的功能。

首先,你需要安装 Flask-Login 插件。可以使用以下命令来安装:

pip install flask-login

然后,在你的 Flask 应用程序中,你需要创建一个 User 类来表示用户。User 类可以包含员工和领导的不同属性和方法。例如:

from flask_login import UserMixin

class User(UserMixin):
    def __init__(self, id, username, password, is_leader):
        self.id = id
        self.username = username
        self.password = password
        self.is_leader = is_leader

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

接下来,你需要创建一个用于验证用户登录和加载用户的函数。例如:

from flask_login import LoginManager

# 创建登录管理器
login_manager = LoginManager()

@login_manager.user_loader
def load_user(user_id):
    # 这个函数用于从数据库或其他存储中获取用户对象
    # 返回用户对象或者None
    return User.get(user_id)

然后,你需要在你的 Flask 应用程序中初始化和配置 Flask-Login 插件。例如:

from flask import Flask
from flask_login import login_required, current_user

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'

# 初始化登录管理器
login_manager.init_app(app)

现在,你可以在你的视图函数中使用@login_required装饰器来限制只有登录用户才能访问该页面。例如:

@app.route('/employees')
@login_required
def employees():
    if current_user.is_leader:
        # 领导可以看到全部数据
        employees = get_all_employees()
    else:
        # 员工只能看到自己的数据
        employees = get_employee_by_id(current_user.id)
    
    return render_template('employees.html', employees=employees)

在上面的代码中,current_user变量表示当前登录的用户对象。is_leader属性用于区分员工和领导。根据用户的角色,你可以在视图函数中查询不同的数据。

最后,你需要在登录过程中验证用户的角色,并将用户对象存储到 session 中。例如:

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']

        # 验证用户名和密码
        user = authenticate_user(username, password)

        if user:
            login_user(user)
            return redirect(url_for('employees'))
        else:
            flash('Invalid username or password.')
    
    return render_template('login.html')

在上面的代码中,authenticate_user函数用于验证用户名和密码,并返回对应的用户对象。

以上就是在 Flask 中实现员工只能看到自己的数据,领导可以看见全部数据的方法。你可以根据你的实际需求进行修改和扩展。


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

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