网站首页/ 信息中心/ 档案百科/

档案管理软件角色权限管理落地实操全步骤指南

发布时间:2026年08月30日 01:50:24 浏览量:0

一、环境准备

本方案基于Python3.8+、Flask框架及MySQL数据库实现,全程零额外服务依赖,直接上手。

1. 安装依赖

执行以下命令安装所需库:

``` pip install flask flask-sqlalchemy pymysql ```

若未安装Python3.8,Windows用户访问https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe 下载安装,勾选“Add Python to PATH”;Mac用户执行brew install python@3.8;Linux用户执行apt install python3.8。

二、项目核心结构

仅需1个文件(app.py)完成所有逻辑,无需复杂目录,降低上手门槛。

三、数据库设计(完整可执行SQL)

在MySQL中执行以下建表语句,无需手动创建库,语句会自动生成表结构:

``` CREATE DATABASE IF NOT EXISTS archive_auth; USE archive_auth; CREATE TABLE IF NOT EXISTS roles ( role_id INT AUTO_INCREMENT PRIMARY KEY, role_name VARCHAR(50) NOT NULL UNIQUE, permissions JSON NOT NULL COMMENT '存储权限列表,如["view_archive","edit_archive"]' ); CREATE TABLE IF NOT EXISTS users ( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(100) NOT NULL, role_id INT NOT NULL, FOREIGN KEY (role_id) REFERENCES roles(role_id) ); CREATE TABLE IF NOT EXISTS archives ( archive_id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(100) NOT NULL, content TEXT, creator_id INT NOT NULL, FOREIGN KEY (creator_id) REFERENCES users(user_id) ); ```

执行方式:打开MySQL终端,输入密码后直接粘贴上述代码,回车完成建表。

四、核心代码实现(完整可直接复制)

1. 初始化配置

新建app.py文件,写入以下内容:

``` from flask import Flask, request, jsonify, g from flask_sqlalchemy import SQLAlchemy import json app = Flask(__name__) 替换为你的MySQL用户名和密码,默认root/root可直接使用 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost:3306/archive_auth' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) ```

重点操作:将连接字符串中的root:root替换为你实际的MySQL登录密码,不可省略。

2. 数据模型定义

档案管理软件角色权限管理落地实操全步骤指南

在app.py中追加以下代码,定义数据库映射:

``` class Role(db.Model): role_id = db.Column(db.Integer, primary_key=True) role_name = db.Column(db.String(50), unique=True, nullable=False) permissions = db.Column(db.JSON, nullable=False) class User(db.Model): user_id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), unique=True, nullable=False) password = db.Column(db.String(100), nullable=False) role_id = db.Column(db.Integer, db.ForeignKey('role.role_id'), nullable=False) class Archive(db.Model): archive_id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) content = db.Column(db.Text) creator_id = db.Column(db.Integer, db.ForeignKey('user.user_id'), nullable=False) ```

3. 权限校验核心方法

追加权限装饰器,用于拦截无权限操作:

``` def require_permission(permission): def decorator(f): def wrapper(args, kwargs): 实际项目中需替换为Session/Token获取的当前用户ID,此处用模拟ID演示 current_user_id = 1 user = User.query.get(current_user_id) role = Role.query.get(user.role_id) if permission not in role.permissions: return jsonify({"code": 403, "msg": "无操作权限"}), 403 return f(args, kwargs) wrapper.__name__ = f.__name__ return wrapper return decorator ```

4. 业务路由实现

追加档案管理相关路由:

``` 创建角色接口 @app.route('/create_role', methods=['POST']) def create_role(): data = request.get_json() if Role.query.filter_by(role_name=data['role_name']).first(): return jsonify({"code": 400, "msg": "角色名已存在"}) new_role = Role( role_name=data['role_name'], permissions=json.dumps(data['permissions']) ) db.session.add(new_role) db.session.commit() return jsonify({"code": 200, "msg": "角色创建成功"}) 创建档案接口(需edit_archive权限) @app.route('/create_archive', methods=['POST']) @require_permission('edit_archive') def create_archive(): data = request.get_json() new_archive = Archive( title=data['title'], content=data['content'], creator_id=1 ) db.session.add(new_archive) db.session.commit() return jsonify({"code": 200, "msg": "档案创建成功"}) 获取档案接口(需view_archive权限) @app.route('/get_archive/', methods=['GET']) @require_permission('view_archive') def get_archive(archive_id): archive = Archive.query.get(archive_id) return jsonify({"code": 200, "data": {"title": archive.title, "content": archive.content}}) if __name__ == '__main__': with app.app_context(): db.create_all() app.run(debug=True) ```

五、实操测试(零门槛步骤)

1. 启动服务

执行命令启动项目:python app.py,控制台输出“Running on http://127.0.0.1:5000/”即启动成功。

2. 创建角色与权限分配

打开终端,执行以下curl命令创建管理员角色(拥有全部权限):

``` curl -X POST http://127.0.0.1:5000/create_role \ -H "Content-Type: application/json" \ -d '{"role_name":"admin","permissions":["view_archive","edit_archive","delete_archive"]}' ```

执行普通用户角色创建命令:

``` curl -X POST http://127.0.0.1:5000/create_role \ -H "Content-Type: application/json" \ -d '{"role_name":"normal_user","permissions":["view_archive"]}' ```

3. 权限校验测试

1. 管理员权限测试:执行以下命令创建档案,返回200则权限生效:

``` curl -X POST http://127.0.0.1:5000/create_archive \ -H "Content-Type: application/json" \ -d '{"title":"测试档案1","content":"测试内容"}' ```

2. 普通用户权限测试:将权限装饰器中current_user_id修改为2,重新运行项目,再次执行创建档案命令,返回403则权限拦截生效。

六、扩展说明

1. 实际项目中,需将current_user_id替换为登录态(Token/Session)的用户标识,避免硬编码;2. 新增权限时,仅需在角色创建接口的permissions数组中添加权限名,对应路由添加@require_permission('新权限名')即可;3. 数据库可替换为PostgreSQL,仅需修改SQLALCHEMY_DATABASE_URI的协议为postgresql://格式,适配对应驱动即可。

档案公积金培训:别让这些“小事”悄悄偷走你的钱
档案公积金培训:别让这些“小事”悄悄偷走你的钱
你是不是也觉得,档案、公积金、培训这些词,听着就头大?每次听到都自动跳过,想着“以后再说”。结果呢,档案在自己手里放成了“死档”,公积金账户里有多少钱、怎么用一问三不知,公司提供的免费培训机会也从来没...
2026年08月30日 01:50:24
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818