Skip to content

基于Koa2实现的大屏内容管理系统的后台,已经实现基础的菜单管理、角色管理和用户管理

License

Notifications You must be signed in to change notification settings

wbccb/BG-CMS-Koa2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BG-CMS-Koa2

内容管理系统后台,使用Koa2进行实现,主要功能有:

  • 账号密码注册和登录功能
  • 用户权限管理功能

详细文档放在 https://github.com/wbccb/cms-docs

迭代版本v0.2.0

  • 从登录界面登录成功后获取token和个人信息(目前只有userId),存入到本地缓存中
  • 刷新页面时,从本地缓存中获取token,然后使用token进行的个人信息的获取,得到个人信息(目前只有userId)
  • 所有接口都带上headers:token,服务端进行校验
  • 服务端实现token过期,客户端检测到token过期后重新登录
  • 创建角色时,需要增加角色种类:超级管理员、系统管理员和普通用户(为了能够区分删除功能,不然你除了菜单,你还得做一个角色的权限管理功能,比如删除某一个角色的权限谁具备)
  • 创建角色时,根据目前roleId返回筛选的所有角色列表(比如超级管理员可以创建系统管理员或者普通用户)
  • 创建角色时,客户端可以选择菜单,根据选择菜单+角色,自动填充permissions字段,比如目前是普通用户,应该保持删除选择disable,其它可以自由选择
  • 创建用户时,根据目前roleId筛选返回对应的角色种类筛选
  • 校验权限时,根据用户绑定角色所具有的菜单数据,返回对应的动态路由菜单;根据用户的permissions权限,在前端和后台控制对应菜单的增删查改功能,只有button类型才具有增删查改权限!
  • 验证用户的权限,比如菜单权限是否有在服务端实现(屏蔽不可见的菜单),菜单的部分权限是否实现(比如删除权限是否有验证)
  • 无感刷新token,避免用户编辑数据时token失效导致的数据丢失
  • 完善创建菜单的逻辑,比如增加icon、增加外链

1.项目目标

  1. 掌握Koa2开发后台服务器的能力
  2. 掌握dockerngnix等相关后台技能
  3. 掌握MySQL等数据库的操作
  4. 结合软考中数据库相关设计,进行理论和实践的结合

后续目标:

  1. 多线程编程,高并发的解决方案
  2. 消息中间件的使用

2.启动服务器nodemon

使用nodemon进行app.js的启动,可以监听文件的改动变化,当代码改变时,自动重启服务

{
  "scripts": {
    "dev": "nodemon src/app.js"
  }
}

3.框架设计

代码结构设计

  • api: 路由封装
  • config: 全局配置的常量
  • dao: 数据库表操作
  • extension: 文件操作类比较大的模块分类
  • lib: 全局异常处理、数据辅助类
  • middleware: 中间件,比如检测是否授权相关中间件、错误处理中间件
  • model: 实体逻辑操作类
  • validator: 请求数据校验

错误处理

lib/http-exception

封装常见的状态码、状态码原因、错误码

检验器

validator第三方库为基础,进行isInt字段+自定义校验函数的封装

建立数据库

Docker

  1. 使用Docker创建数据库容器
  2. 配置对应的账号和密码
  3. 使用第三方库sequelize进行数据库的操作

自动执行SQL语句,创建、更新、删除、新增等操作

4.业务功能

  • validators.xxx: 校验器,可自定义字段校验和自定义校验方法
  • models/xxx: 逻辑操作类,进行数据库相关的操作以及其它业务操作
  • api/xxx: 路由选择,进行koa-router,然后调用校验器进行参数校验,调用逻辑操作类进行数据的处理,然后进行返回数据给用户

4.1 注册

  • api/user: 路由选择,进行koa-router,然后调用校验器进行参数校验,调用逻辑操作类进行数据的处理,然后进行返回数据给用户
    • validators.user: 校验器
    • models/user: 逻辑操作类

4.2 登录

4.3 用户权限

token的获取和存储

4.4 菜单管理

数据库表设计

/models/menu.js

路由处理

/api/system/menu.js:调用数据库操作的工具方法,拿到数据库操作结果后返回数据

数据库操作的工具方法

/models/role.js

校验规则

/validator/system.js

const success = new Success();
success.setData({
    total: 2,
    list: tree
});
// 返回结果
ctx.body = success.getData();

4.5 角色管理

4.5.1 数据库表设计

/models/role.js

4.5.2 初始化数据库的表数据

/api/system/initData/init_role.js有对应的数组数据

4.5.3 路由处理

4.5.3.1 数据库操作的工具方法
4.5.3.2 校验规则

4.6 用户管理

4.6.1 数据库表设计

4.6.2 初始化数据库的表数据

4.6.3 路由处理

4.6.3.1 数据库操作的工具方法
4.6.3.2 校验规则

参考

  1. https://github.com/TaleLin/lin-cms-koa
  2. https://chenshenhai.github.io/koa2-note/note/project/start.html
  3. https://github.com/MrXujiang/lowcode-cms

About

基于Koa2实现的大屏内容管理系统的后台,已经实现基础的菜单管理、角色管理和用户管理

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published