前言
前段时间我们写一个简单的后台模板 SpringBoot 系列 --Security + Layui 实现一套权限管理后台模板, 今天我们把它完善成一个简单通用的后台管理系统, 我把它叫做: Base Admin
这套 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 进制字符串存储, 用户除了能主动修改密码外, 还能叫管理员重置密码
个性菜单
用户可以自行配置自己的个性化快捷菜单
实时日志
详情请看我之前的博客: SpringBoot 系列 --Logback 日志, 输出到文件以及实时输出到 Web 页面
API 加密
详情请看我之前的博客: 前后端 API 交互数据加密 --AES 与 RSA 混合加密完整实例
请求参数加密
响应数据加密
关键点讲解
1, 定制 url 访问权限, 动态权限读取, 需要自定义配置认证数据源, 认证管理器, 拦截器, 详情步骤请参考: https://www.jianshu.com/p/0a06496e75ea ;
2,API 加密中, 由于登录校验是 Spring Security 做的, 因此我们要在 UsernamePasswordAuthenticationFilter 获取账号, 密码之前完成解密操作, 正好我们的校验验证码操作就是在它之前, 同时要做响应数据的加密操作, 所以登录部分的 API 加密光按照我们之前的博客来还是不够的, 需要在 CaptchaFilterConfig 进行解密操作, 解密后 new 一个自定义 RequestWrapper 设置 Parameter, 并将这个新对象传到 doFilter 交由下一步处理
后记
这个只是一个比较简单通用的后台系统, 如果加入工作流, 就可以升级成基础平台, 为简化业务开发, 将部分通用系统功能整理成独立项目, 具体业务功能通过 iframe 嵌入
代码开源
注: 数据库文件在 resources/static/sql 目录下面
代码已经开源, 托管到我的 GitHub, 码云:
- GitHub: https://github.com/huanzi-qch/base-admin
- https://github.com/huanzi-qch/springBoot
码云: https://gitee.com/huanzi-qch/base-admin
来源: https://www.cnblogs.com/huanzi-qch/p/11534203.html