起源:cnblogs.com/huanzi-qch/p/11534203.html
前言
这套 Base Admin 是一套简略通用的后盾管理系统,次要性能有:权限治理、菜单治理、用户治理,零碎设置、实时日志,实时监控,API 加密,以及登录用户批改明码、配置共性菜单等。
技术栈
前端:layui
java 后端:SpringBoot + Thymeleaf + WebSocket + Spring Security + SpringData-Jpa + MySql
工程构造阐明
java 局部、html、js、css 局部都是大目录上面按单表一个子目录寄存
运行预览
成果先睹为快,具体介绍在下方,按性能点进行详情介绍
性能演示
登录
(为了不便演示,明码输入框的类型改成 text)配置文件分支抉择,dev 环境无需输出验证码。
同时反对多种登录限度。
容许 / 禁止账号多人在线。
软删除
限度登录 IP 地址
账号过期
更多登录限度,还能够持续扩大。
零碎设置
一下简略的零碎属性设置,想反对更多的配置可自行扩大(比方这里的:用户治理初始、重置明码)。
零碎设置新增局部性能,详见文末“补充更新”
菜单治理
菜单治理是一棵 layui 的 Tree
权限治理
增删改查
动静权限加载
权限的加载并不是写死在代码,而是动静从数据库读取,每次调用 save 办法时更新权限汇合。
1、妲己是 ROLE_USER 权限,权限内容为空,无权拜访 /sys/ 上面的门路(http://localhost:8888/sys/sysUser/get/1)
2、应用 sa 超级管理员进行权限治理编辑,给 ROLE_USER 的权限内容增加 /sys/**,妲己立刻有权限拜访(http://localhost:8888/sys/sysUser/get/1)
用户治理
次要包含用户信息、登录限度的保护,菜单、权限的调配等。
批改用户权限是下一次登录失效。
批改用户菜单是刷新零碎即可失效。
用户治理新增“以后在线用户”治理,详见文末“补充更新”
登录用户信息
根本信息
登录用户只能批改局部信息,例如名称、批改明码
批改明码
明码应用的是 MD5 加密并转换为 16 进制字符串存储,用户除了能被动批改明码外,还能叫管理员重置明码。
共性菜单
用户能够自行配置本人的个性化快捷菜单。
实时日志
应用 websocket,实时将日志输入到 web 页面,1 秒刷新一次。
留神:这里的日志配置只配置了 dev 环境,prod 环境尚未为空,公布生产环境前记得先配置,否则生成的日志文件将不会输出日志内容!
实时监控
实时监控的是零碎硬件环境、以及 jvm 运行时内存,注:因自己暂无 Linux 环境,所以只测试了 windows 环境,有问题请及时反馈,谢谢!
应用 websocket,实时将数据输入到 web 页面,1 秒刷新一次。
API 加密
申请参数加密
响应数据加密
1、零碎设置新增 API 加密开关,可一键敞开、开启 API 加密;
开启 API 加密
敞开 API 加密
关键点解说
1、定制 url 拜访权限,动静权限读取,须要自定义配置认证数据源、认证管理器、拦截器,详情步骤请参考:https://www.jianshu.com/p/0a0…;
2、API 加密中,因为登录校验是 Spring Security 做的,因而咱们要在 UsernamePasswordAuthenticationFilter 获取账号、明码之前实现解密操作,正好咱们的校验验证码操作就是在它之前,同时要做响应数据的加密操作,所以登录局部的 API 加密光依照咱们之前的博客来还是不够的,须要在 CaptchaFilterConfig 进行解密操作,解密后 new 一个自定义 RequestWrapper 设置 Parameter,并将这个新对象传到 doFilter 交由下一步解决。
3、还是 API 加密问题,咱们是在程序启动的时候生成后端 RSA 秘钥对,失常来说咱们在拜访登录页面进行登录的时候前端获取一下就能够了,但在开发环境中,咱们通常开启热部署性能,改完代码程序可能会主动重启,但登录用户信息依然放弃在本地线程,零碎仍旧处于登录状态没有跳转到登录页面,导致后端公钥曾经扭转,但前端仍旧用的是旧的后端公钥,所有导致加解密失败;解决:在拜访 index 首页时也获取一下后端公钥,这样在开发的时候 idea 热部署后刷新页面就能够了(已提交最新代码,解决热部署后刷新页面还是 API 加解密失败问题;当初热部署后刷新页面即可)
4、好多人都不晓得,我的项目有工具类 CodeDOM.java 能够生成一套单表的残缺增删改查后盾代码。
配置好数据库,指定代码生成父地位。
运行 main 函数即可一键生成一套单表增删改查后盾代码。
后记
这个只是一个比较简单通用的后盾零碎,如果退出工作流,就能够升级成根底平台,为简化业务开发,将局部通用零碎性能整顿成独立我的项目,具体业务性能通过 iframe 嵌入。
1、新增百度富文本的应用。
对应字段类型,mysql 要改成 longtext
2、新增“”记住我“”性能,也就是 rememberMe,原理以及源码探索请看这位大佬的博客:https://blog.csdn.net/qq_3714…
须要新增一张表,SQL 文件我也以及更新了。
4、零碎设置新增零碎色彩,头部、左侧菜单的色彩可按情绪切换(SQL 文件已同步更新)
5、用户治理模块新增“以后在线用户”治理,可实时查看以后在线用户,以及对以后在线用户进行强制下线操作。
代码曾经开源:
GitHub:https://github.com/huanzi-qch…
码云:https://gitee.com/huanzi-qch/…
关注 Java 编程鸭 微信公众号,后盾回复:码农大礼包 能够获取最新整顿的技术材料一份。涵盖 Java 框架学习、架构师学习等!