來源:cnblogs.com/huanzi-qch/p/11534203.htmlcss
前言html
這套Base Admin是一套簡單通用的後臺管理系統,主要功能有:權限管理、菜單管理、用戶管理,系統設置、實時日誌,實時監控,API加密,以及登陸用戶修改密碼、配置個性菜單等。前端
前端:layuijava
java後端:SpringBoot + Thymeleaf + WebSocket + Spring Security + SpringData-Jpa + MySqlmysql
java部分、html、js、css部分都是大目錄下面按單表一個子目錄存放git
效果先睹爲快,具體介紹在下方,按功能點進行詳情介紹github
(爲了方便演示,密碼輸入框的類型改爲text)配置文件分支選擇,dev環境無需輸入驗證碼。web
同時支持多種登陸限制。sql
更多登陸限制,還能夠繼續擴展。數據庫
系統設置
一下簡單的系統屬性設置,想支持更多的配置可自行擴展(好比這裏的:用戶管理初始、重置密碼)。
系統設置新增部分功能,詳見文末「補充更新」
菜單管理是一棵layui的Tree
權限管理
增刪改查
權限的加載並非寫死在代碼,而是動態從數據庫讀取,每次調用save方法時更新權限集合。
一、妲己是ROLE_USER權限,權限內容爲空,無權訪問/sys/下面的路徑(http://localhost:8888/sys/sysUser/get/1)
二、使用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加密
請求參數加密
響應數據加密
一、系統設置新增API加密開關,可一鍵關閉、開啓API加密;
開啓API加密
關閉API加密
關鍵點講解
一、定製url訪問權限,動態權限讀取,須要自定義配置認證數據源、認證管理器、攔截器,詳情步驟請參考:https://www.jianshu.com/p/0a0...;
二、API加密中,因爲登陸校驗是Spring Security作的,所以咱們要在UsernamePasswordAuthenticationFilter獲取帳號、密碼以前完成解密操做,正好咱們的校驗驗證碼操做就是在它以前,同時要作響應數據的加密操做,因此登陸部分的API加密光按照咱們以前的博客來仍是不夠的,須要在CaptchaFilterConfig進行解密操做,解密後new一個自定義RequestWrapper設置Parameter,並將這個新對象傳到doFilter交由下一步處理。
三、仍是API加密問題,咱們是在程序啓動的時候生成後端RSA祕鑰對,正常來講咱們在訪問登陸頁面進行登陸的時候前端獲取一下就能夠了,但在開發環境中,咱們一般開啓熱部署功能,改完代碼程序可能會自動重啓,但登陸用戶信息仍然保持在本地線程,系統依舊處於登陸狀態沒有跳轉到登陸頁面,致使後端公鑰已經改變,但前端依舊用的是舊的後端公鑰,全部致使加解密失敗;解決:在訪問index首頁時也獲取一下後端公鑰,這樣在開發的時候idea熱部署後刷新頁面就能夠了(已提交最新代碼,解決熱部署後刷新頁面仍是API加解密失敗問題;如今熱部署後刷新頁面便可)
四、好多人都不知道,項目有工具類CodeDOM.java能夠生成一套單表的完整增刪改查後臺代碼。
配置好數據庫,指定代碼生成父位置。
運行main函數便可一鍵生成一套單表增刪改查後臺代碼。
後記
這個只是一個比較簡單通用的後臺系統,若是加入工做流,就能夠升級成基礎平臺,爲簡化業務開發,將部分通用系統功能整理成獨立項目,具體業務功能經過iframe嵌入。
一、新增百度富文本的使用。
對應字段類型,mysql要改爲longtext
二、新增「」記住我「」功能,也就是rememberMe,原理以及源碼探究請看這位大佬的博客:https://blog.csdn.net/qq_3714...
須要新增一張表,SQL文件我也以及更新了。
四、系統設置新增系統顏色,頭部、左側菜單的顏色可按心情切換(SQL文件已同步更新)
五、用戶管理模塊新增「當前在線用戶」管理,可實時查看當前在線用戶,以及對當前在線用戶進行強制下線操做。
代碼已經開源:
GitHub:https://github.com/huanzi-qch...
碼雲:https://gitee.com/huanzi-qch/...
關注Java編程鴨微信公衆號,後臺回覆:碼農大禮包 能夠獲取最新整理的技術資料一份。涵蓋Java 框架學習、架構師學習等!