

前后端分离 Vue + Egg.js + Mysql 的 JS 全栈实践。动态菜单, RBAC 权限模型, WebSo...
source link: https://www.v2ex.com/t/801472
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前后端分离 Vue + Egg.js + Mysql 的 JS 全栈实践。动态菜单, RBAC 权限模型, WebSocket 实现站内信。已部署到线上!
Imfdj · 3 小时 23 分钟前 · 648 次点击Beehive
Beehive 是一个项目管理系统。参考于 Teambetion 、PearProject,实现部分功能。
这是一个 Vue+Node.js 的 js 全栈项目。基于 RBAC 模型做权限控制,动态配置菜单,前端实现页面元素级别的权限控制。通过 WebSocket 实现站内信功能,任务看板中,实现更新同步推送。一旦其他项目成员有对我们当前查看的项目任务做任何的操作,页面都将立即同步更新,并向此任务的所有参与者(除了操作者)发送消息通知。注册和找回密码需要通过邮箱验证码验证,可以通过 github 授权登陆(不是很稳定)。
Node.js 框架选用的是 Egg.js ,配合 sequelize,自己写了一个小工具。可以通过填写表字段的配置,执行 npm run generator-entity 自动生成一整套文件,包括 Swagger 、数据校验 validate 、Sequelize 需要的 model 、controller 、service 、router 。并自动创建数据库表,包括每个字段的类型、长度、是否能为空、默认值、注释、索引、甚至是外键都能搞定。因为加了权限控制,所以还要到前端的资源管理中添加一下新增的资源,并在角色中点选分配一下,就完成了一张表的 CRUD 了,包括新增、修改、详情、批量删除、分页列表。当然这还是有很多可以优化的空间的,但也基本够用了。为了优化鉴权消耗,以及满足 WebSocket 的可靠性设计需要,系统引入 Redis 做缓存。
密码是加盐存储的,且在传输过程中使用了 RSA 做了非对称加密。Jwt 认证使用 Access Token + Refresh Token,配合黑名单。
预发布环境:超级管理员账号:test-super,密码:test-super123 预发布环境地址:beehives.imfdj.top
预发布环境:普通用户账号:test-user,密码:test-user123
生产环境:普通用户账号:test-user,密码:test-user123 生产环境地址:beehive.imfdj.top
前端:Vue2 全家桶 + Element-ui + Axios + Vue-socket.io + Sass 前端项目 github 地址
后端:Egg.js + Sequelize + Jwt + Mysql + Redis + Socket + Swagger 后端项目 github 地址
如果对您有帮助,您可以点右上角 "Star" 支持一下 谢谢! ^_^
或者您可以 "follow" 一下,我会不断开源更多的有趣的项目。如:Vue3 + NestJS + TypeScript ✨
如有问题请直接在 Issues 中提,或者您发现问题并有非常好的解决方案,欢迎 PR 👍
登录、注册 -- 完成
github 授权登录 -- 完成
找回密码 -- 完成
滑块验证 -- 完成
邮箱验证 -- 完成
动态首页 -- 完成
个人设置 -- 完成
用户管理 -- 完成
角色管理 -- 完成
菜单管理 -- 完成
资源管理 -- 完成
操作日志 -- 完成
动态菜单 -- 完成
部门管理 -- 完成
项目列表 -- 完成
任务看板 -- 完成
任务列表 -- 完成
项目文件 -- 完成
项目概览 -- 完成
项目成员 -- 完成
项目邀请 -- 完成
项目设置 -- 完成
项目回收站 -- 完成
任务筛选 -- 完成
任务详情 -- 完成
任务标签 -- 完成
任务参与者 -- 完成
任务动态 -- 完成
任务工时 -- 完成
任务关联文件 -- 完成
任务更新即时同步 -- 完成
公开项目的业务权限控制(非项目成员不可编辑项目) -- 完成
项目模板 -- 完成
消息提醒 -- 完成
工作台 -- 完成
站内信 -- 完成
页面元素权限控制 -- 完成
项目版本 -- 待开发
项目日程 -- 待开发
后端 egg 项目部署
运行环境:
Node.js >= v10; Mysql >= 5.7; Redis >= 5.0;
git clone https://github.com/Imfdj/egg-beehive.git
cd egg-beehive
npm install 或 yarn(推荐)
将 database 目录下的 egg-beehive-dev.sql 和 egg-beehive-test.sql 导入 mysql (推荐 navicat )。
在 config 目录下的 config.local.js 和 config.unittest.js 中的 exports.sequelize 、exports.redis 、exports.io.redis 下填入 Mysql 和 Redis 的配置参数
npm run dev
npm run test-local (单元测试)
如何快速 CRUD:
在 generator 文件夹中的 config.js 文件中定义各个字段的描述,完成后执行 npm run generator-entity 。
里面还有很多 config-*.js 的配置文件可供参考。也可以在 template 文件夹中自定义各个文件的模板。
// 这是一个字段的描述模板
fieldsItemExample: {
name: 'xx_id',
type: 'INTEGER',
length: 11,
min: 1,
max: 1,
required: true,
description: '这里是描述', // 供 swagger 使用
primaryKey: false, // 是否为主键
unique: false, // 是否唯一
allowNull: false, // 是否允许为空
autoIncrement: false, // 是否自增
defaultValue: '', // 数据库表中字段的默认值
comment: '外键', // 数据库表中字段的描述
references: {
// 外键设置
model: 'xxxs', // 外键关联表
key: 'id', // 外键字段名
},
onUpdate: 'NO ACTION', // 外键更新约束 CASCADE RESTRICT SET NULL SET DEFAULT NO ACTION
onDelete: 'NO ACTION', // 外键删除约束 CASCADE RESTRICT SET NULL SET DEFAULT NO ACTION
}
前端 vue 项目部署
git clone https://github.com/Imfdj/vue-beehive.git
cd vue-beehive
npm install 或 yarn(推荐)
npm run serve
数据库设计
License
Copyright (c) 2021 Imfdj
Recommend
-
161
前后端分离的问题,不仅仅是技术上的选型问题,还涉及到整个团队在认知、职责、流程上面重新定义的问题,这也是为什么前后端分离概念看起来简单易懂,但真正团队在落地的时候,一不小心,往往鸡飞狗跳,甚至最终放弃"治疗"。下面,基于自己之前的对一个团队前后端...
-
104
前后端分离并不是什么新鲜事,到处都是前后端分离的实践。然而一些历史项目在从一体化 Web 设计转向前后端分离的架构时,仍然不可避免的会遇到各种各样的问题。由于层出不穷的问题,甚至会有团队质疑,一体化好好的,为什么要前后端分离? 说到底,并不是前后分离...
-
28
关于前后端分离开发中的权限处理问题,松哥之前写过一篇文章和大家聊这个问题: Spring Boot + Vue 前后端分离开发,权限管理的一点思路
-
41
权限在我看来指的是某个用户是否能够访问某个接口。对应到前端,即使某个用户访问了一个本不应该让他看到的页面,在访问接口时不具备权限,这样即使进入了页面,也不能看到相应的数据。但是我们前端要做的工作就是让用户在访问这个页面的时候,直接就收到提示,没...
-
16
我们来创建动态菜单吧 首先,先对动态菜单的概念、操作、流程进行约束: 1.Host和各个Tenant有自己的自定义菜单 2.Host和各个Tenant的权限与自定义菜单相关联 2.Tenant有一套默认的菜单,规定对应的TenantId=-1,在添加租户时...
-
15
ELADMIN-WEB ELADMIN 前端源码 https://el-admin.vip 初始模板基于: https://github.com/PanJiaChen/vue-element-admin...
-
17
作者:_Yufan<br> 来源:www.cnblogs.com/yfzhou/p/9813177.html 本文总结自实习中对项目的重构。原先项目采用 Springboot+freemarker 模版,开发过程中觉得前端逻辑写的实在恶心,后端 Controller 层还必须返回 Freemarker 模版的 ModelAndView...
-
3
管理系统后端(java)请参考:https://blog.csdn.net/grd_java/article/details/121925792 本项目源码,码云:
-
6
前后端分离后的权限控制设计方案-51CTO.COM 前后端分离后的权限控制设计方案 作者:江南一点雨 2022-05-27 10:40:04 系统为后台管理系统,包含了用户创建、用户登录、用户管理自己的...
-
8
HDFS、Yarn、Hive…MRS中使用Ranger实现权限管理全栈式实践 原创 华为云开发者联盟...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK