基于FastAPI框架从零开始搭建权限管理系统--01前言篇

前言

鉴于之前开源了关于后台管理系统,但是开源的出来项目重点在于后端的FastAPI框框的封装了(其实封装上存在有点过度了),也有部分的刚学习框架的人对此也感兴趣,陆陆续续的加要源码,想来还是需要重头到尾,对框架的封装,以及重新简化还,哈是有必要的进行重来一次,也便于别人学习。

关于权限系统功能概述

开源出来项目其实相关权限管理还是其实存在不完整的,因那个项目仅仅是对封装进行第一次试验应用,所以应该是存在非常多问题有待完善的。

通常比较权限系统所包含的功能点主要包含有以下功能点:

  • 系统登入: 主要包用户进行系统登入认证验证模块。

  • 字典管理:管理应用程序中使用到的字典数据,如性别、职位等,可以在权限系统中配置和维护这些字典数据,方便应用程序调用。

  • 菜单管理:主要包括包含管理后台系统相关的菜单项,包括菜单的创建、编辑、删除等操作,以及菜单与角色之间的关联和解除关联。

  • 用户管理:主要包括用户的创建、编辑、删除、禁用/启用等操作,以及用户信息的查询和展示。

  • 角色管理:主要包括角色的创建、编辑、删除等操作,以及角色与用户之间的关联和解除关联。

  • 部门管理:主要包括组织和管理组织结构中的各个部门,包括部门的创建、编辑、删除等操作,以及部门与用户之间的关联和解除关联。

  • 机构管理:管理组织机构和部门信息,包括机构的创建、编辑、删除等操作,以及机构与用户之间的关联和解除关联。

  • 权限管理:主要包括权限的创建、编辑、删除等操作,以及权限与角色之间的关联和解除关联。

  • 访问控制:主要包含了对系统中的资源(API接口,API接口返回内容)进行保护,确保只有具有相应权限的用户可以访问受限资源。然后我们可以进行基于角色或权限进行配置进行访问控制。

  • 身份验证和授权:主要是用户进行身份验证,并根据用户的角色和权限判断其是否有权进行特定操作。常见的身份验证方式包括用户名密码验证、单点登录(SSO)、令牌验证等。

  • 审计日志:包含登入日志和操作日志,记录用户的操作行为和系统的重要事件,用于追踪和审计用户活动,以及发现潜在的安全问题。

  • 会话管理:管理用户的会话状态,包括会话的创建、销毁、超时设置等。会话管理可以防止会话劫持和滥用。

  • 系统配置:提供修改系统标题、Logo、favicon 等基础配置功能,以方便用户系统与其自身品牌形象保持一致(暂未开放高级配置)

  • 代码生成:提供根据数据库表自动生成相应的前后端 CRUD 代码的功能 在线用户:管理当前登录用户,可一键踢下线

  • 更复杂可能还涉及到多租户支持:如果系统需要支持多个租户(例如不同的组织或公司),权限系统需要能够隔离和管理不同租户的用户、角色和权限。

这里暂时罗列出来大概一个权限系统所需的功能点,随着后续的开发可能还会涉及到相关微服务相关模块:

  • 配置中心、服务治理、服务熔断等。

前期我们主要是以单体的服务方式先把整体管理系统实现,后续再进行服务拆分。

关于前端系统说明

由于个人能力有限,所有相关前端模板目前只能套用别人已编写前端模块框架。之前的项目是基于SmartAdmin的前端框架页面来搭建,在新的权限系统框架里面, 个人打算基于Arco Design Vue 来搭建。Arco Design Vue 是一个基于 Vue.js 的前端 UI 框架,旨在提供一套美观、易用和高效的组件库,帮助开发者快速构建现代化的 Web 应用程序。它是字节跳动开源出来的企业级设计系统 UI框架组件,对应的后台模板则是Arco Design Pro,它是一个开箱即用的中后台前端解决方案。Arco Design Vue 有一下一些特点和功能:

  • 美观的设计:Arco Design Vue 提供了一套精心设计的组件,具有现代化和简洁的外观。这些组件经过精心设计,符合最佳的用户体验和可用性原则。

  • 高度可定制:Arco Design Vue 的组件具有高度可定制性,可以根据项目需求进行灵活的样式和主题定制。你可以轻松地修改组件的颜色、尺寸、边框等样式属性,以适应不同的设计风格和品牌要求。

  • 响应式布局:Arco Design Vue 的组件库支持响应式布局,可以根据不同的屏幕尺寸和设备类型自动调整布局和样式。这使得你的应用程序在不同的设备上都能提供良好的用户体验。

  • 多语言支持:Arco Design Vue 支持多语言国际化,可以轻松地将应用程序本地化为不同的语言。它提供了内置的语言切换和翻译功能,方便开发者根据用户的语言偏好提供相应的界面文本。

  • 丰富的组件库:Arco Design Vue 提供了丰富的组件库,涵盖了常见的 UI 组件,如按钮、表单、导航、对话框、消息提示等。这些组件都经过优化和测试,可以直接在项目中使用,减少开发时间和工作量。

  • 文档和示例:Arco Design Vue 提供了详细的文档和示例,帮助开发者快速上手并了解如何使用组件库。文档提供了清晰的组件介绍、API 文档和示例代码,让你能够快速理解和使用每个组件。

对应的后台模板则是Arco Design Pro提供后台,可以访问:

http://vue-pro.arco.design/dashboard/workplace

为了节省前端开始模板的时间,我个人计划基于 ContiNew Admin 中后台管理框架/脚手架来搭建。

ContiNew Admin 中后台管理框架/脚手架,Continue New Admin,持续以最新流行技术栈构建,拥抱变化,迭代优化。当前采用的技术栈:Vue3、TypeScript、Arco Design Vue、Spring Boot、Undertow、Sa-Token、JWT、MariaDB、MyBatis Plus、Redis、Redisson、Easy Excel、Hutool 等。

开源地址:https://github.com/Charles7c/continew-admin

相关的体验地址为:https://cnadmin.charles7c.top

特此表示非常感谢大佬的开源,也同意本人使用它的前端模板项目来编写相关新后台系统的搭建。

PS: ContiNew Admin 中后台管理框架/脚手架大佬开源项目的交流群如下,如果你是java系的并且对此项目感兴趣,大家可以加入这个位大佬的群进行交流:

大佬开源项目的前端的系统界面清新优雅,高尚大气上档次,值得推荐。相关系统图示如下:

系统界面

  • 登入系统界面
  • 系统主页
  • 个人信息管理界面
  • 系统用户管理界面
  • 系统部门管理界面
  • 系统角色管理界面
  • 系统菜单管理界面
  • 系统公告管理界面
  • 系统字典管理界面
  • 系统配置界面
  • 代码生成界面

其他相关日志系统界面:

如此大气高尚上档次的UI界面图,难道不值得你拥有的吗?接下来我会重新基于此开源前端框架模板,继续完善我个人已开源出来的后端框架,并去除多余的过度的封装,并完善相关其他功能,比如数据权限,比如其他代码生成等相关功能模块,还有其他相关的任务管理等。

关于后端系统说明

由于ContiNew Admin 中后台管理框架/脚手架是基于JAVA体系来搭建,而个人的技术栈目前主要是PY为主,也刚好符合我们个人下继续完善FastAPI框架相关知识点的补充和累积,所以会基于ContiNew Admin 进行套壳的替换相关API。所以整个权限系统的介绍,会更加偏向于后端相关介绍。整体的后端搭建的基本会保持个人的开源的Fastapi+vue+Postgresql+peewee+SmartAdmin 框架基本保持一致,个人的开源项目地址如下:

https://gitee.com/xiaozhong1988/toy-fastapi-smart-admin

整体的后端的结果大概还会保持一致。但是个会随着每天编写有一定的改动。成体的架构图示,目前初步确定如下:

但是还是会适当进行改变,因为之前整体的封装其实个人感觉封装的过于java化了!!!这个所以不太合适刚接触学习的人进行使用。也计划打算更换其他的技术:

  • 核心框架:FastAPI+ASYCIO的异步特性
  • 数据库ORM:postgresql+sqlalchemy
  • 消息队列:主要基于ARQ或CELERY等实现。
  • 日志记录:LOGURU第三方库的使用。
  • 系统监控:prometheus+grafana
  • 聚合日志系统:Loki+grafana
  • 内部服务:GRPC(计划)

后续的章节会针对后端相关一些细节有针对性的展开进行讲解和介绍。

目前暂时计划如上,下一篇主要是介绍关于系统的数据库相关。

文笔有限,如有笔误或错误!欢迎批评指正!感谢各位大佬!有什么问题也可以随时交流!

结尾

END

简书:https://www.jianshu.com/u/d6960089b087

掘金:https://juejin.cn/user/2963939079225608

公众号:微信搜【程序员小钟同学】

新开QQ群号,欢迎随时加群交流,相互学习。QQ群号:247491107

小钟同学 | 文 【欢迎一起学习交流】| QQ:308711822


请使用浏览器的分享功能分享到微信等