PyRBAC 企业级权限管理系统实战分享

项目简介

PyRBAC 是一个基于 FastAPI + Vue 3 + PostgreSQL + Redis 的企业级 RBAC(基于角色的访问控制)权限管理系统。该系统旨在为企业提供一套完整的权限管理解决方案,支持细粒度的权限控制、完整的用户管理体系以及丰富的系统功能。MTC模式完成初版需求设计,code模式完成代码开发。

主要页面截图

登录页面

主页

部分功能

技术栈

后端技术

  • Python 3.11+:高性能异步支持、丰富的第三方库生态
  • FastAPI:现代化异步框架,自动生成API文档,类型安全
  • PostgreSQL:企业级关系数据库,支持JSON、全文检索
  • Redis:高性能缓存,用于会话管理和权限缓存
  • JWT:无状态认证,支持双令牌机制
  • SQLAlchemy 2.0:成熟ORM,支持异步操作
  • Alembic:数据库迁移工具
  • Pydantic 2.0:数据验证和序列化

前端技术

  • Vue 3 + TypeScript:类型安全的前端框架,Composition API
  • Element Plus:企业级UI组件库
  • Pinia:Vue 3官方状态管理库
  • Vue Router:官方路由管理
  • Axios:HTTP客户端,支持拦截器
  • Vite:现代前端构建工具,快速HMR

功能特性

核心功能

  • 用户管理:用户的增删改查、密码重置、状态管理
  • 角色管理:角色的增删改查、权限分配、角色继承
  • 菜单管理:菜单的增删改查、权限控制、路由生成
  • 部门管理:部门的增删改查、层级管理
  • 岗位管理:岗位的增删改查、关联用户
  • 字典管理:字典类型和数据的管理,支持数据标准化
  • 系统配置:系统参数的管理,支持动态配置
  • 通知管理:系统通知的管理,支持消息推送
  • 日志管理:操作日志和登录日志的查看,支持审计追踪

安全特性

  • JWT双令牌机制:Access Token(30min) + Refresh Token(7d)
  • 密码加密:使用bcrypt算法,自动加盐
  • 权限控制:基于角色和菜单的细粒度权限控制
  • 操作日志:自动记录用户操作,支持审计
  • 登录日志:记录登录成功/失败,支持安全分析
  • 请求限流:防止恶意请求攻击
  • 数据权限:行级数据过滤,确保数据安全

性能特性

  • 缓存策略:Redis缓存用户权限、字典数据、系统参数等
  • 异步处理:FastAPI异步支持,Celery任务队列
  • 数据库优化:索引设计、连接池管理、慢查询监控
  • 响应压缩:Gzip压缩响应数据

项目结构

后端结构

python-rbac/
├── backend/           # 后端代码
│   ├── app/          # 应用主目录
│   │   ├── api/       # API路由层
│   │   ├── core/      # 核心配置
│   │   ├── middleware/ # 中间件
│   │   ├── models/    # 数据库模型
│   │   ├── repositories/ # 数据访问层
│   │   ├── schemas/   # 数据验证
│   │   ├── services/  # 业务逻辑层
│   │   ├── utils/     # 工具函数
│   │   └── main.py    # 应用入口
│   ├── alembic/       # 数据库迁移
│   ├── tests/         # 测试代码
│   ├── Dockerfile     # Docker配置
│   └── requirements.txt # 依赖管理

前端结构

├── frontend/          # 前端代码
│   ├── src/           # 源代码
│   │   ├── assets/     # 静态资源
│   │   ├── components/ # 组件
│   │   ├── layout/     # 布局
│   │   ├── router/     # 路由
│   │   ├── stores/     # 状态管理
│   │   ├── types/      # 类型定义
│   │   ├── utils/      # 工具函数
│   │   ├── views/      # 页面
│   │   ├── App.vue     # 应用根组件
│   │   └── main.ts     # 应用入口
│   ├── public/         # 公共资源
│   ├── .env.development # 开发环境配置
│   ├── .env.production  # 生产环境配置
│   ├── index.html      # HTML模板
│   ├── package.json    # 前端依赖
│   └── vite.config.ts  # Vite配置

快速开始

本地开发

后端

  1. 安装依赖
cd backend
pip install -r requirements.txt
  1. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置数据库连接信息
  1. 运行数据库迁移
cd backend
alembic upgrade head
  1. 启动后端服务
cd backend
uvicorn app.main:app --reload

前端

  1. 安装依赖
cd frontend
npm install
  1. 启动前端开发服务器
cd frontend
npm run dev

Docker 部署

  1. 构建并启动所有服务
docker-compose up -d --build
  1. 访问应用

项目亮点

  1. 完整的RBAC权限模型:支持用户-角色-权限的完整权限体系,实现细粒度的权限控制
  2. 前后端分离架构:采用现代化的前后端分离架构,开发效率高,用户体验好
  3. 异步性能优化:后端采用FastAPI异步框架,前端使用Vite构建工具,性能优异
  4. 安全可靠:多重安全措施,包括JWT认证、密码加密、权限控制、操作日志等
  5. 易于部署:支持Docker容器化部署,一键启动所有服务
  6. 代码质量高:严格的代码规范,完整的测试覆盖,代码质量有保障
  7. 扩展性强:模块化设计,易于扩展新功能

项目价值

PyRBAC 权限管理系统可广泛应用于企业内部系统、SaaS平台、管理系统等场景,为企业提供统一的权限管理解决方案。系统不仅功能完整,而且性能优异,安全可靠,是企业级应用的理想选择。

后续规划

  1. 多租户支持:增加多租户功能,支持多组织管理
  2. 微服务架构:将系统拆分为微服务,提高可扩展性
  3. 前端优化:进一步优化前端性能和用户体验
  4. 国际化支持:增加多语言支持
  5. API网关:集成API网关,提供统一的API管理

结语

PyRBAC 权限管理系统是一个功能完整、性能优异、安全可靠的企业级权限管理解决方案。通过现代化的技术栈和架构设计,为企业提供了一套标准化的权限管理体系,帮助企业更好地管理和控制系统访问权限。

项目代码已开源至 Gitee,欢迎大家 star 和 fork!

项目地址


技术栈:FastAPI + Vue 3 + PostgreSQL + Redis
项目类型:企业级权限管理系统
开发状态:已完成核心功能开发
开源协议:MIT License

欢迎大家交流和使用!