# Mini RBAC 系统 `Python(FastAPI)`、`VUE3`实现,仅保留核心权限控制的极简后台管理。 ![index](./imgs/index.png) 相关视频:[https://www.bilibili.com/video/BV1mP411H7PL/](https://www.bilibili.com/video/BV1mP411H7PL/) ## 项目说明文档 ## 1. 数据库模型 ### 1.1 用户表 (sys_user) - username: 账号 (唯一) - nickname: 姓名 - password: 密码 ### 1.2 角色表 (sys_role) - name: 角色名称 - remark: 角色描述 ### 1.3 菜单表 (sys_menu) - name: 名称 - icon: 菜单图标 - path: 菜单url - type: 菜单类型 (0目录 1组件 2按钮 3数据) - component: 组件地址 - pid: 父id - identifier: 权限标识 (如user:add) - api: 接口地址 - method: 接口请求方式 ### 1.4 关系表 - 用户角色关系表 (sys_user_role) - uid: 用户id - rid: 角色id - 角色菜单关系表 (sys_role_menu) - rid: 角色id - mid: 菜单id ## 2. API接口 ### 2.1 认证相关 - POST /login 用户登录 - GET /ws WebSocket系统信息 ### 2.2 用户管理 - GET /user 用户列表 - POST /user/query 用户查询 - POST /user 用户新增 - DELETE /user/{pk} 用户删除 - GET /user/{pk} 用户信息 - PUT /user/{pk} 用户更新 - PUT /user/role/{rid} 用户切换角色 ### 2.3 角色管理 - GET /role 角色列表 - POST /role/query 角色查询 - POST /role 角色新增 - GET /role/{rid}/menu 查询角色权限 - DELETE /role/{pk} 角色删除 - PUT /role/{pk} 角色更新 ### 2.4 菜单管理 - POST /menu 菜单新增 - GET /menu 菜单列表 - DELETE /menu/{pk} 菜单删除 - PUT /menu/{pk} 菜单更新 ## 3. 技术栈 ### 3.1 后端 - Python 3.x - FastAPI (Web框架) - Tortoise ORM (ORM框架) - Uvicorn (ASGI服务器) - Gunicorn (WSGI服务器) - bcrypt (密码加密) - python-jose (JWT认证) ### 3.2 前端 - Vue 3 (前端框架) - Pinia (状态管理) - Vue Router (路由管理) - Ant Design Vue (UI组件库) - ECharts (图表库) - Vite (构建工具) - Axios (HTTP客户端) ## 4. 网页页面 ### 4.1 主要页面结构 - 登录页 (login) - 主页面 (main) - 仪表盘 (dashboard) - 系统管理 - 用户管理 (user) - 角色管理 (role) - 菜单管理 (menu) - 测试页面 (test) ### 4.2 页面功能 - 登录认证 - 用户管理:增删改查、角色分配 - 角色管理:增删改查、权限分配 - 菜单管理:增删改查 - 仪表盘:系统信息展示 - WebSocket实时数据更新 ### 4.3权限控制 - 前端菜单权限控制 - 前端路由权限控制 - 前端按钮权限控制 - 后端接口权限控制 ## 备注 原项目地址:[https://github.com/zy7y/mini-rbac](https://github.com/zy7y/mini-rbac) 本人学习全栈项目时clone了这个项目作为参考,同时优化了readme文件,未违反mit开源协议 ## 图片展示 ### 页面 ![login](./imgs/login.png) ![change](./imgs//select.png) ![user](./imgs/useradd.png) ![role](./imgs/menuadd.png) ![menu](./imgs/roleadd.png) ### 接口 ![user-api](./imgs/user-api.png) ![role-menu](./imgs/role-menu-api.png)