一套簡單通用的 Java 後臺管理系統,拿來即用,非常方便(附項目地址)
作者:huanzi-qch
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/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
2、新增 “” 記住我 “” 功能,也就是 rememberMe,原理以及源碼探究請看這位大佬的博客:
https://blog.csdn.net/qq_37142346/article/details/80114609
3、系統設置新增系統顏色,頭部、左側菜單的顏色可按心情切換(SQL 文件已同步更新)
4、用戶管理模塊新增 “當前在線用戶” 管理,可實時查看當前在線用戶,以及對當前在線用戶進行強制下線操作
代碼地址
GitHub:https://github.com/huanzi-qch/base-admin
碼雲:https://gitee.com/huanzi-qch/base-admin
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/trBf1ec8nYn9C7eLy2wz6w