当前位置: 首页 > 编程日记 > 正文

java中后台是那一部分_一套Java后台管理系统,拿来即用(附项目地址)

前言

这套Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理、菜单管理、用户管理,系统设置、实时日志,实时监控,API加密,以及登录用户修改密码、配置个性菜单等

技术栈

前端:layui

java后端:SpringBoot + Thymeleaf + WebSocket + Spring Security + SpringData-Jpa + MySql

工程结构说明

java部分、html、js、css部分都是大目录下面按单表一个子目录存放

44e998ce55c386710de41623857fda01.png

f44514b3c6cf8dcf1ad3054fe11fd623.png

1ad8a4e37bb05b57b3003d85a1895486.png

运行预览

效果先睹为快,具体介绍在下方,按功能点进行详情介绍

fc2dca2abe52f06ad49b26e018dd4fbb.png

功能演示

登录

(为了方便演示,密码输入框的类型改成text)

配置文件分支选择,dev环境无需输入验证码

881a164f2c9b3b8a7ff6f96e3c6bdc98.gif

d2156e54f449884ef83f491b128aa67e.gif

同时支持多种登录限制

允许/禁止账号多人在线

48789214337354319bb92b3a635479ba.gif

软删除

6aaff23417d58081cb77c83223c6155b.gif

限制登录IP地址

d7a64b80172f9a610876620779e2a19c.gif

账号过期

d20b4eaddd7922edf7365ee49596e1a4.gif

更多登录限制,还可以继续扩展

系统设置

一下简单的系统属性设置,想支持更多的配置可自行扩展(比如这里的:用户管理初始、重置密码)

f1be375d63857b400e1aa40890a8590a.png

系统设置新增部分功能,详见文末“补充更新”。

推荐阅读:设计模式入门

菜单管理

菜单管理是一棵layui的Tree

增删改

c812d1e297fd9e352789d18fe1aa3058.png

权限管理

增删改查

15314c8109b10d3fab15b26dbff0007a.gif

动态权限加载

权限的加载并不是写死在代码,而是动态从数据库读取,每次调用save方法时更新权限集合

1、妲己是ROLE_USER权限,权限内容为空,无权访问/sys/下面的路径(http://localhost:8888/sys/sysUser/get/1)

2、使用sa超级管理员进行权限管理编辑,给ROLE_USER的权限内容添加 /sys/**,妲己立即有权限访问(http://localhost:8888/sys/sysUser/get/1)

77acdbfcd365362487f413be50804ba7.gif

用户管理

主要包括用户信息、登录限制的维护,菜单、权限的分配等

fbfdc649adc97406b1bc7df2b2de06e2.png

修改用户权限是下一次登录生效

32053ebf6238541d8223fbbdabe0fce7.gif

修改用户菜单是刷新系统即可生效

1f9bf76c40aa527a9e08ecaefec07734.gif

用户管理新增“当前在线用户”管理,详见文末“补充更新”。

登录用户信息

基本信息

登录用户只能修改部分信息,例如名称、修改密码

c3dd54e4fd188edc9cc8200e5279a2e7.png

修改密码

密码使用的是MD5加密并转换为16进制字符串存储,用户除了能主动修改密码外,还能叫管理员重置密码

268647cb99158f0ae5fc7048375b2da1.png

b101af6f3147a1b91a99711fc75a86e5.gif

个性菜单

用户可以自行配置自己的个性化快捷菜单

0483df5e32ebe8dece6366e7b66b1dd3.png

实时日志

使用websocket,实时将日志输出到web页面,1秒刷新一次

注意:这里的日志配置只配置了dev环境,prod环境尚未为空,发布生产环境前记得先配置,否则生成的日志文件将不会输入日志内容!

f0b037b3e7a02984b451b301d31bb7dd.png

ada561bad4112dcf07e04e8b08d7e8bc.png

实时监控

实时监控的是系统硬件环境、以及jvm运行时内存,注:因本人暂无Linux环境,所以只测试了windows环境,有问题请及时反馈,谢谢!

使用websocket,实时将数据输出到web页面,1秒刷新一次

b130509ae1d008920953348c6e3b9b35.gif

API加密

请求参数加密

cb9bae1bb284f3e7e7df20f3c1a551c1.png

响应数据加密

924b741dc9197a2d8bc14aebd832da28.png

1、系统设置新增API加密开关,可一键关闭、开启API加密;

开启API加密

3407bf3cd7acc059eb7c1ac5e0a5e7bc.png

关闭API加密

ca261345d5964be2ef686afbe75c0f35.png

关键点讲解

1、定制url访问权限,动态权限读取,需要自定义配置认证数据源、认证管理器、拦截器,详情步骤请参考:

https://www.jianshu.com/p/0a06496e75ea;

2、API加密中,由于登录校验是Spring Security做的,因此我们要在UsernamePasswordAuthenticationFilter获取账号、密码之前完成解密操作,正好我们的校验验证码操作就是在它之前,同时要做响应数据的加密操作,所以登录部分的API加密光按照我们之前的博客来还是不够的,需要在CaptchaFilterConfig进行解密操作,解密后new一个自定义RequestWrapper设置Parameter,并将这个新对象传到doFilter交由下一步处理

3、还是API加密问题,我们是在程序启动的时候生成后端RSA秘钥对,正常来说我们在访问登录页面进行登录的时候前端获取一下就可以了,但在开发环境中,我们通常开启热部署功能,改完代码程序可能会自动重启,但登录用户信息仍然保持在本地线程,系统依旧处于登录状态没有跳转到登录页面,导致后端公钥已经改变,但前端依旧用的是旧的后端公钥,所有导致加解密失败;解决:在访问index首页时也获取一下后端公钥,这样在开发的时候idea热部署后刷新页面就可以了(已提交最新代码,解决热部署后刷新页面还是API加解密失败问题;现在热部署后刷新页面即可)

更新

1、新增百度富文本的使用,但还没配置上传接口:

UEditor文档: http://fex.baidu.com/ueditor/#start-start

对应字段类型,mysql要改成longtext

bd11a936ab52d9b49bd4d876dbb97705.png

2、新增“”记住我“”功能,也就是rememberMe,原理以及源码探究请看这位大佬的博客:

https://blog.csdn.net/qq_37142346/article/details/80114609

8883c8705918b9f3326a961e47b00e32.png

15124d2c4c3fd768e2cdef314cba16cc.png

3、系统设置新增系统颜色,头部、左侧菜单的颜色可按心情切换(SQL文件已同步更新)

c7a5aa38cfa8ec18f1e739fa68f79eb7.png

4、用户管理模块新增“当前在线用户”管理,可实时查看当前在线用户,以及对当前在线用户进行强制下线操作

729502480ba810c445c4ca449e702cda.gif

代码地址获取

相关文章:

基础 HTML之目录问题(相对路径和绝对路径区别)

一、相对路径和绝对路径 相对路径:以引用文件之网页所在位置为参考基础,而建立出的目录路径。因此,当保存于不同目录的网页引用同一个文件时,所使用的路径将不相同,故称之为相对。 绝对路径:以Web站点根目录…

[转]android selector 背景选择器

关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法。首先android的selector是在drawable/xxx.xml中配置的。先看一下listview中的状态:把下面的XML文件保存成你自己…

牛客国庆集训派对Day6 B.Board

链接 [https://www.nowcoder.com/acm/contest/206/B] 分析 只要在n*n范围内随便找一个斜对角的一个格子去计算就知道了 具体看代码体会吧 代码 #include<bits/stdc.h> using namespace std; int a[1010][1010];int main(){int n,i,j,x,y;//freopen("in.txt",&q…

java并发读取相同的文件_高效读取大文件,再也不用担心 OOM 了!

最近阿粉接到一个需求&#xff0c;需要从文件读取数据&#xff0c;然后经过业务处理之后存储到数据库中。这个需求&#xff0c;说实话不是很难&#xff0c;阿粉很快完成了第一个版本。内存读取第一个版本&#xff0c;阿粉采用内存读取的方式&#xff0c;所有的数据首先读读取到…

Cmake 实例学习 一

一. 第一个简单的例子 在一个目录下面实现一个简单的 hello world 程序 使用cmake进行构建的时候&#xff0c;每个目录下面都要有一个 CMakeLists.txt 的文件 如果是一个稍微大的工程&#xff0c;有多级目录&#xff0c;在上级目录中的 CMakeLists.txt 中会有定义要求编译子目…

ORA-19502: write error on file xxxxx, block number xxxx

错误现象&#xff1a; 在ORACLE 10g下为表空间IGNITE_EGVSQL01增加数据文件时&#xff0c;报如下错误&#xff1a; SQL> ALTER TABLESPACE IGNITE_EGVSQL01 ADD DATAFILE /oradata/ignt/ignite_egvsql01_d02.dbf SIZE 4096M AUTOEXTEND OFF; ERROR at line 1: O…

关于Jfinal的分享代码托管GitHub

为什么80%的码农都做不了架构师&#xff1f;>>> Blog中所有的代码已经托管到github. https://github.com/b1412 此blog中关于Jfinal的代码分享不再维护。有兴趣的朋友可以关注我的github。 大家都贡献和分享一点&#xff0c;让jfinal发展的更好~ 转载于:https:…

软件发布版本的业界规则?

文章&#xff1a;8天学通MongoDB——第一天 基础入门 今天看到一篇文章说&#xff1a;业界规则&#xff0c;偶数为“稳定版”&#xff08;如&#xff1a;1.6.X&#xff0c;1.8.X&#xff09;&#xff0c;奇数为“开发版”&#xff08;如&#xff1a;1.7.X&#xff0c;1.9.X)&am…

CMake学习资料

CMake 官方 FAQ https://gitlab.kitware.com/cmake/community/wikis/FAQ CMake 官方文档 https://cmake.org/cmake/help/cmake2.4docs.html CMake 视频教程 https://www.youtube.com/watch?vCLvZTyji_Uw CMake 维基教科书 https://zh.wikibooks.org/w/index.php?titleCMake_入…

MySQL rpm包 二进制区别_Linux环境下安装mysql5.6(二进制包不是rpm格式)

一.准备:1.CentOS release 6.82.mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz3.Linux下MySQL5.6与MySQL5.7安装方法略有不同二.卸载原有的mysqlfind / -name mysqlrm -rf 上边查找到的路径&#xff0c;多个路径用空格隔开三.在安装包存放目录下执行命令解压文件tar -zxvf mysql-…

【心情】 轻装前行

为自己做一份总结吧&#xff0c;从毕业到现在~ 时间过得不快不慢&#xff0c;从毕业到现在挣扎着已经2年多了&#xff0c;2年多经历的了很多事情。 毕业回国不到一个礼拜&#xff0c;就跑到大连工作&#xff0c;一个造船厂&#xff0c;公司在长兴岛开发区&#xff0c;岛上几万人…

Android 马甲包制作流程

一、马甲包的制作流程 1.配置马甲包的applicationId以及应用名称 在app的build.gradle文件中添加马甲包的配置 android {signingConfigs {config {keyAlias ****keyPassword ****storeFile file(D:/qianming/****.jks)storePassword ****}}compileSdkVersion 25buildToolsVersi…

Cmake 交叉编译

转载自 http://zhixinliu.com/2016/02/01/2016-02-01-cmake-cross-compile/ CMake交叉编译 CMake的使用&#xff0c;以及如何将一个项目移植到Android。 CMake的用法 先让我们简单学习回顾一下cmake的基本知识&#xff1a; 基本流程 以linux平台为例&#xff0c;使用 CMak…

利用System.Uri转URL为绝对地址

在使用ASPOSE.Word生成Word文档时可以通过InsertHtml(html)来将图文信息写入Word文档(图片内嵌)&#xff0c;但要求html里图片的src是绝对全路径&#xff0c;所以需要对html进行转化。 获取html可以来自数据库数据或者通过网络抓取&#xff0c;得到之后使用System.Uri来进行替换…

idea上java接口自动化_Java接口自动化之IDEA创建及运行maven项目

本文2564字阅读约需7分钟第195次推送Maven作为一个项目管理工具&#xff0c;是一组标准集合&#xff0c;一个项目的生命周期、一个依赖管理系统&#xff0c;以下主要介绍IDEA创建及运行maven项目。01创建maven项目①打开IDEA&#xff0c;顶部菜单栏依次选择File-->New-->…

.NET面向上下文、AOP架构模式(实现)

.NET面向上下文、AOP架构模式&#xff08;实现&#xff09; 1.上下文Context、面向切面编程AOP模型分析 在本人的.NET面向上下文、AOP架构模式&#xff08;概述&#xff09;一文中&#xff0c;我们大概了解了上下文如何辅助对象在运行时的管理。在很多时候我们急需在运行时能把…

英语之弱元音Schwa

IELTS Speaking - 学会英语Schwa弱元音&#xff0c;你的口语也将充满英伦味 https://baijiahao.baidu.com/s?id1596905156544848616&wfrspider&forpc http://blog.sina.com.cn/s/blog_95e5f8a601017jr4.html https://www.guokr.com/blog/440820/ 打傻方进 百家号04-05…

工厂方法模式和抽象工厂模式

工厂方法模式和抽象工厂模式工厂方法模式抽象工厂模式总结:工厂方法模式 #include <string> #include <iostream>// Abstract class Splitter { private:/* data */ public:Splitter(/* args */);virtual ~Splitter(); public:virtual void split() 0; };Splitte…

关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题...

前段时间做一个项目&#xff0c;而项目中所有的请求都要用jquery 中的ajax请求或者post请求&#xff0c;但是开始处理一些简单操作还好&#xff0c;但是自己写了一些验证就出现问题了&#xff0c;比如表单提交的时候&#xff0c;要验证帐号的唯一性&#xff0c;所以要在submit前…

下列关于Java多线程并发控制_下列关于Java多线程并发控制机制的叙述中,错误的是...

下列叙述成都望江楼的造景手法有()。竹文化景观应体现科学性与艺术性的和谐统一&#xff0c;关于既要满足植物的生态习性&#xff0c;又能体现美学价值。在中国传统的审美趣味、多线伦理道德上&#xff0c;竹在造园中被拟人化为( )的代表。程并错误下列不属于竹文化旅游的发展趋…

一.vtun源码学习笔记

1.守护进程 &#xff08;1&#xff09;守护进程简介 守护进程,也就是我们通常所说的Daemon进程。它是一个生存期较长的进程&#xff0c;它通常独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。 它与普通进程相比有下面这些特殊性&#xff1a;守护进程最重要的…

获取data 数据

export function getData(el, name, val) {const prefix data-if (val) {return el.setAttribute(prefix name, val)}return el.getAttribute(prefix name) } 转载于:https://www.cnblogs.com/hss-blog/p/9781816.html

java jwks_Java SpringBoot 如何使用 IdentityServer4 作为验证服务器学习笔记

这边记录下如何使用IdentityServer4 作为 Java SpringBoot 的 认证服务器和令牌颁发服务器。本人也是新手&#xff0c;所以理解不足的地方请多多指教。另外由于真的很久没有写中文了&#xff0c;用词不太恰当的地方也欢迎新手大佬小伙伴指出&#xff0c;一起进步。另外这边令牌…

git 快速复制一个新项目

gitlab创建项目a及一个主分支master 本地整体复制已有项目b 本地克隆gitlab上新创建的项目a&#xff08;git clone gitlab地址&#xff09; 将本地克隆过来的a文件夹下的.git目录拷贝到b项目下&#xff08;cp -r .git …/b&#xff0c;注意是两个点&#xff0c;不是三个点,写两…

微信公众平台消息接口星标功能

【微信公众平台星标功能接口被撤销】微信公众平台消息接口中的星标功能&#xff0c;被悄悄的去掉了。 原因应该是有的账号在程序中大量使用星标功能&#xff0c;造成微信服务器存储记录过于宠大。 现在要继续使用星标功能&#xff0c;只能在后台手工操作。 <xml> <ToU…

国庆双节长假旅游出行必装的手机软件

长假即将来临&#xff0c;如果打算出去溜达溜达&#xff0c;透透气的朋友&#xff0c;本文可千万别错过了。今天将介绍几款应用是旅途中绝对不能缺少的&#xff0c;这些应用都非常好用、功能全面&#xff0c;是出行必备的手机软件&#xff0c;希望可以伴你度过快乐的十一长假。…

Windbg双机调试环境配置(Windows7/Windows XP+VirtualBox/VMware+WDK7600)

简介&#xff1a;Windbg双机调试内核、驱动 下载软件&#xff1a; 下载Windbg(GRMWDK_EN_7600_1.ISO)下载VirtualBox 5.2/VMware 12一、安装WDK&#xff0c;这里要提一点的是Debugging Tools for Windows一定要打勾&#xff0c;因为我们后面就是要通过这个工具来进行双机调试的…

哈夫曼树的java实现_java实现哈夫曼树

哈夫曼译码,就是将输入的译码还原成对应的字符。 抽象的算法描述:将建立哈夫曼树、实现哈夫曼编码、哈夫曼译码都定义成 子函数的的形式, 然后在主函数中调用它们......数据结构课程设计设计题目: 哈夫曼树及其应用学 院:计算机科学与技术 专业:网络...用哈夫曼树实现图像压缩_…

on-my-zsh git 仓库下运行卡顿

在 oh-my-zsh 进入 包含 git 仓库目录时&#xff0c;执行 ls 时会比较卡顿 原因&#xff1a; oh-my-zsh 要获取 git 更新信息 解决办法&#xff1a; 设置 oh-my-zsh 不读取文件变化信息&#xff08;在 git 项目目录执行下列命令&#xff09; $ git config --add oh-my-zsh…

oracle, group by, having, where

选择列表中如果包含有列、表达式时&#xff0c;这个列、表达式必须包含在Group By子句中。另外&#xff0c;如果采用了表达式的话&#xff0c;则数据库管理员即使在选择列表中采用了别名&#xff0c;但是在Group By子句中仍然必须采用表达式的完整表达方式&#xff0c;而不能够…