前言
這套Base Admin是一套簡單通用的背景管理系統,主要功能有:權限管理、菜單管理、使用者管理,系統設定、實時日志,實時監控,API加密,以及登入使用者修改密碼、配置個性菜單等。
前端:layui
java後端:SpringBoot + Thymeleaf + WebSocket + Spring Security + SpringData-Jpa + MySql
java部分、html、js、css部分都是大目錄下面按單表一個子目錄存放

效果先睹為快,具體介紹在下方,按功能點進行詳情介紹
(為了友善示範,密碼輸入框的類型改成text)配置檔案分支選擇,dev環境無需輸入驗證碼。
同時支援多種登入限制。
更多登入限制,還可以繼續擴充。
系統設定
一下簡單的系統屬性設定,想支援更多的配置可自行擴充(比如這裡的:使用者管理初始、重置密碼)。
系統設定新增部分功能,詳見文末“補充更新”
菜單管理是一棵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加解密失敗問題;現在熱部署後重新整理頁面即可)
4、好多人都不知道,項目有工具類CodeDOM.java可以生成一套單表的完整增删改查背景代碼。
配置好資料庫,指定代碼生成父位置。
運作main函數即可一鍵生成一套單表增删改查背景代碼。
後記
這個隻是一個比較簡單通用的背景系統,如果加入工作流,就可以更新成基礎平台,為簡化業務開發,将部分通用系統功能整理成獨立項目,具體業務功能通過iframe嵌入。
1、新增百度富文本的使用。
對應字段類型,mysql要改成longtext
2、新增“”記住我“”功能,也就是rememberMe,原理以及源碼探究請看這位大佬的部落格:https://blog.csdn.net/qq_37142346/article/details/80114609
需要新增一張表,SQL檔案我也以及更新了。
4、系統設定新增系統顔色,頭部、左側菜單的顔色可按心情切換(SQL檔案已同步更新)
5、使用者管理子產品新增“目前線上使用者”管理,可實時檢視目前線上使用者,以及對目前線上使用者進行強制下線操作。
代碼開源
注:資料庫檔案在resources/static/sql目錄下面
該系統源碼擷取方式
1. 掃描下面這個二維碼
2. 關注後回複「管理系統」,擷取源碼
▲二維碼進行關注▲