- 从登录界面登录成功后获取token和个人信息(目前只有userId),存入到本地缓存中
- 刷新页面时,从本地缓存中获取token,然后使用token进行的个人信息的获取,得到个人信息(目前只有userId)
- 所有接口都带上headers:token,服务端进行校验
- 服务端实现token过期,客户端检测到token过期后重新登录
- 用户登录后,获取个人信息,拿到对应的userId、roleId、permissions数据
- 获取用户列表数据时,也能获取对应用户的userId、roleId、permissions信息
- 创建角色时,需要增加角色种类:超级管理员、系统管理员和普通用户,根据目前登录用户等级去显示能够el-select的数据(为了能够区分删除功能,不然你除了菜单,你还得做一个角色的权限管理功能,比如删除某一个角色的权限谁具备)
- 创建角色时,根据目前roleId返回筛选的所有角色列表(比如超级管理员可以创建系统管理员或者普通用户)
- 创建角色时,客户端可以选择菜单,根据选择菜单+角色,自动填充permissions字段,比如目前是普通用户,应该保持删除选择disable,其它可以自由选择
- 创建用户时,根据目前roleId筛选返回对应的角色种类筛选
- 校验权限时,根据用户绑定角色所具有的菜单数据,返回对应的动态路由菜单;根据用户的permissions权限,在前端和后台控制对应菜单的增删查改功能,只有button类型才具有增删查改权限!
- 验证用户的权限,比如菜单权限是否有在服务端实现(屏蔽不可见的菜单),菜单的部分权限是否实现(比如删除权限是否有验证)
- 无感刷新token,避免用户编辑数据时token失效导致的数据丢失
- 完善创建菜单的逻辑,比如增加icon、增加外链
基于Vue3.2、TypeScript、Vite4、Pinia、Element-Plus开源的一套后台内容管理系统
项目基于
- 工作和学习的开发经验
- 参考多个github的个人开发者开源库的源码写法,比如ruoyi
- 参考多个github的知名开源库的源码写法,比如vue3、webpack5
进行的内容管理系统的Vue3版本的开发
所有的功能都应该基于一个文件夹,比如css、js、vue文件都应该放在一个文件夹,如果有其它项目想要移植该功能,能够直接复制文件夹即可复用该功能
80%的代码应该是基础代码 20%比较复杂定制化的业务代码应该抽离到另外的文件夹进行存放 如果想要扩展,可以轻易使用基础代码进行扩展
每一个可复用的功能都应该简单明了,有注释说明,如果想要使用其它框架
比如React重写某一个功能时,可以直接复用该功能的css+js文件
比如使用WebComponent重写某一个功能时,可以直接复用该功能的css+js文件
每一个功能应该描写对应的注释和文档,为了后面优化时能够想起这样写的目的,也为了后面使用其它框架重写时能够快速重写
- 本项目实现基础常见的功能,犹如
vite跟webpack相比较,vite将常见的打包功能集成在内部的插件中一样,本项目会集成可以二次扩展的基础功能,比如登录、基础的图片内容管理、基础的地图加载控件 - 本项目除了实现基础功能,应该实现基础的组件,形成一套基础的组件库
BG-CMS-React是mini-CMS-Admin的重写版,不仅仅具备基础功能,但是会扩展更多的复杂功能,与BG-CMS-Koa2配套
- 登录注册功能
- 权限管理:角色管理、账号管理
- 菜单增删改查功能和权限功能:与角色绑定
- 国际化
- 换肤功能
- 访问日志
- 性能检测:各种性能指标采集以及bug检测
- 内容管理:包括图片管理、富文本管理
- 菜单管理
- 角色管理
- 用户管理
- 权限完善
- 用户登录与token完善
- 权限部分与后台进行联调
- 国际化部分
- 换肤功能
- 访问日志
- 性能检测