MealS(干饭人)用户角色权限集增强版脚手架

MealS是基于Meal开源工程进行了增强,提供将权限粒度细分到接口/按钮级,采样用户-角色-权限集的方式进行授权、鉴权,可以自行定义角色所具备的权限集,实现更高粒度的权限控制能力。

所属分类 开源

相关标签 SpringBootVue权限

基本信息

Meal'S是对Meal工程的增强版。

Meal'S依旧不会包含过多的业务逻辑,提供用户-角色-权限集的基础管理能力。

Meal'S可以实现自定义角色并为角色自由赋予权限,最终用户所具备的权限集是其所选择的角色权限集的并集。

Meal'S工程为了提升效率设置了相对科学的缓存命名空间,下文中会详细说明。

服务端工程地址:GiteeGitHub

前端工程地址:GiteeGitHub

Meal'S服务端使用MyBatis-Plus作为基础脚手架。

Meal'S服务端使用jjwt实现JWT快速加解密。

Meal'S-ui前端工程Fork自vue-admin-template

本人是JAVA服务端开发,@花裤衩的前端系列开源项目为我学习Vue提供非常大的帮助,非常感谢!

功能清单

Meal'S工程仅提供了最基本的账号-角色-权限集支撑能力,没有涉及其他功能页面。

为了提供更为友好的体验,提供了账号查看自身权限集的能力。

/static/upload/post/1646357607925.jpg

/static/upload/post/1646357623966.jpg

/static/upload/post/1646357637822.jpg

/static/upload/post/1646357657374.jpg

/static/upload/post/1646357668420.jpg

/static/upload/post/1646357704403.jpg

/static/upload/post/1646357677093.jpg

开发说明

  1. JDK 1.8 已知可能持续使用很长时间的版本
  2. MySql 5.7 经典版本
  3. Redis 6.0 比较新的一个版本(实际上目前项目中对版本要求没有十分严格)

Meal'S才用了Redis作为默认缓存工具,为了提升鉴权和查询性能,主要实现两大缓存。

权限树缓存:用于界面渲染树形结构。

权限集缓存:用户服务端接口鉴权。

设置缓存的主要目的用于降低数据库查询压力,尤其是查询权限树时,需要组装树形结构。

/static/upload/post/1646357747021.jpg

/static/upload/post/1646357828391.jpg

  • MyBatisPlusConfig:MyBatis-Plus配置类,配置Mapper扫描位置、分页插件等。
  • RedisConfig:配置Redis为默认缓存工具及常见操作Bean配置。
  • CodeMakerUtils:代码生成器的执行类
  • JwtUserContext:JWT安全用户上下文对象(全局获取登录用户信息)
  • JwtFilter:Jwt过滤器,核心过滤器(登录、授权、拦截)
  • ExceptionHandler:全局异常捕获处理(AOP实现,支持自定义异常处理)
  • AuthorizeInterceptor:权限拦截器(基于自定义注解@Authorize实现鉴权)
  • EncryptionUtils:盐值加密工具(账号的密码生成,不可逆加密算法)
  • SysInitTask:系统启动任务(当前主要缓存全部权限树)
  • ThreadAuthRole:角色权限变动线程(根据变动的角色ID更新角色、涉及用户权限相关缓存)
  • ThreadPoolConfig:基于Spring的线程池配置
  1. 数据库初始化刷库
  2. application-dev.yml配置您的数据库信息和redis信息(默认localhost)
  3. 启动App类

启动示意图:

/static/upload/post/1646357785945.jpg

  1. Node.js(基本工具)
  2. Git(多数前端工程依赖会需要调用Git下载)

因为Meals-ui和Meal-ui的工程目录结构没有产生变动,因此此处直接引用了Meal-ui的工程目录结构图。

/static/upload/post/1646357795932.jpg

/static/upload/post/1646357758580.jpg

  1. 移除Mocks模拟返回服务(调用meal服务端工程)
  2. 移除测试模块以及相关依赖
  3. 移除Cookies插件依赖,Cookies统一替换为window.localStorage
  4. 补充动态路由由服务端返回的用户角色集Roles控制
  5. 移除自定义icon(svg格式),替换为element-ui的图标,直接修改了Sidebar/Item.vue
  6. 核心方法getUserBase获取用户基础信息src/store/modules/user.js getInfo()
  7. 增加v-droll可以自由在屏幕范围内拖动弹窗(src/directive/droll.js)

以下为Meals-ui基于Meal-ui增加的主要改动。

  1. 增加自定义指令v-authorize判断界面按钮菜单是否具备权限
  2. 修改路由rolse为auth(路由指定唯一auth标示需要的权限)
  3. 代码生成器增强,支持模糊查询表名,支持多选生成代码
  4. 对原本的element-ui主题配色进行了修改
<!-- v-authorize使用方式 -->
<button type="button" v-authorize="'SYS-USER-M'" />

/static/upload/post/1646357843208.jpg

# 依赖下载
npm install
# 开发模式
npm run dev
# 生产编译
npm run build

关于个人

关于米虫

米虫

做一个有理想的米虫,伪全栈程序猿,乐观主义者,坚信一切都是最好的安排!

本站由个人原创、收集或整理,如涉及侵权请联系删除

本站内容支持转发,希望贵方携带转载信息和原文链接

本站具有时效性,不提供有效、可用和准确等相关保证

本站不提供免费技术支持,暂不推荐您使用案例商业化

选择个人头像

昵称

邮箱

QQ

网址

评论提示

  • 头像:系统为您提供了12个头像自由选择,初次打开随机为你选择一个
  • 邮箱:可选提交邮箱,该信息不会外泄,或将上线管理员回复邮件通知
  • 网址:可选提交网址,评论区该地址将以外链的形式展示在您的昵称上
  • 记忆:浏览器将记忆您已选择或填写过得信息,下次评论无需重复输入
  • 审核:提供一个和谐友善的评论环境,本站所有评论需要经过人工审核