
- 序言
- 正文
- 第一關、拉取專案
- 第二關、匯入資料庫
- 第三關、修改 JDBC 組態檔
- 第四關、環境搭建,修改 nginx 設定
- 第五關、添加地址白名單
- 尾聲
序言
大家好,我是白墨!
本次的目標是學習 iBase4J 這個框架,先貼一個官方的介紹:
- iBase4J是Java語言的分布式系統架構, 使用Spring整合開源框架,
- 使用Maven對專案進行模塊化管理,提高專案的易開發性、擴展性,
- 系統包括4個子系統:系統管理Service、系統管理Web、業務Service、業務Web,
- 系統管理:包括用戶管理、權限管理、資料字典、系統引數管理等等,
- 業務相關:您的業務開發,
- 可以無限的擴展子系統,子系統之間使用Dubbo或MQ進行通信,
我先跟著網上找的一篇教程 [1] 走了一遍,
但教程過時,有些地方走不通,然后再自行研究修改,所以有了本文,建議讀本文前先看看原教程,錯了也沒關系,
原教程地址: https://blog.csdn.net/u011781521/article/details/79022363
主要是這個專案沒有官方的檔案,據說官方檔案是付費進Q群才能獲取,而且現在群又是滿的,難受,
來人,給作者續費個年費超會!

正文
第一關、拉取專案
專案原始碼地址:https://gitee.com/iBase4J/iBase4J ,直接用 Git 拉取就行了,
不會的話進入頁面手動下載吧……
當然,我這也有一條龍服務,保您滿意: 手把手教你IDEA連接碼云(Gitee),
第二關、匯入資料庫
使用的資料庫版本為 MySQL8.0+,

匯入以后結果如下圖所示,

那個 ibase4j_biz 的資料庫也是 sql 陳述句生成的,里面啥也沒有,也不知道有沒有用,暫時沒去管它,
第三關、修改 JDBC 組態檔
修改 兩個 Service 模塊 下的 jdbc.properties 組態檔,開發、生產、測驗環境加起來一共有 6 個,一股腦全改了,

其中密碼是通過呼叫方法獲得 top.ibase4j.core.util.SecurityUtil.encryptDes(String password,byty[] key) ,
隨便找個 main 方法呼叫后在控制臺輸出即可獲得,
此處與網路上的教程不同,卡了我半天,
具體呼叫方法如下:
System.err.println(SecurityUtil.encryptDes("root",new byte[]{57,48,49,51,57,49,49,57}));
其中陣列 key 是我通過 debug 時觀察解密方法傳入的參獲得的,

我的密碼是 root ,加密后為 M1XaoOiy+J7= ,
如果你的也是,可以先試試能不能直接用…
第四關、環境搭建,修改 nginx 設定
環境有一堆,全是 Windows 的,我的版本如下:
apache-activemq-5.13.2
apache-zookeeper-3.6.2-bin
nginx-1.9.12
Redis-x64-3.0.504
打了個包,我這套環境的地址: https://baimoo.lanzouh.com/isNdG036arwj 密碼: baimo
開頭提到的【原教程】里面也分享了一套環境,在這: https://baimoo.lanzouh.com/iF3cS036atuj 密碼: baimo
接下來修改 nginx 設定,配置路徑在 nginx-1.9.12\conf\nginx.conf ,如下圖,root 后面填靜態頁面的路徑,
網上公開的教程都沒有寫到 src 這一級目錄,應該是當時作者還沒有修改檔案位置吧,
此處與網路上的教程不同,卡了我一天,一直在報 403!
沒學過 nginx ,姑且猜測埠號就是服務器端的埠吧,所以我填了 127.0.0.1:8088 ,

其他沒什么改動,分別啟動即可(最好用管理員模式),路徑如下:
apache-activemq-5.13.2\bin\win64\activemq.bat
apache-zookeeper-3.6.2-bin\bin\zkServer.cmd
Redis-x64-3.0.504\redis-server.exe
nginx-1.9.12\nginx.bat(<---需要改一下里面的啟動路徑)
第五關、添加地址白名單
一切搞好以后,分別啟動模塊 iBase4J-SYS-Service 和 iBase4J-SYS-Web ,
然后進入 http://127.0.0.1 終于打開了登錄頁面,
可是登錄時又回傳了 308 錯誤,后臺報了個跨站請求,可我所有環境都在本機,
賬密:
admin/111111


通過搜索 [2] 、 debug 排查發現有個地址白名單,
在類 top.ibase4j.core.filter.CsrfFilter 里面有個 whiteUrls 陣列,
值是通過讀取檔案 white/csrfWhite.txt 獲取的,

那么,找到檔案,在 iBase4J-SYS-Web 模塊下, iBase4J-SYS-Web/src/main/resources/white/csrfWhite.txt ,

好家伙,一個都沒有,難怪 size 為 0,永遠也登錄不了,
把本機地址加進去,然后重啟模塊 iBase4J-SYS-Web ,
http://127.0.0.1
http://localhost/
再次進入登錄頁面 http://127.0.0.1 ,輸入 admin/111111 ,登錄成功,

一開始沒有登錄成功,以為是密碼錯了, debug 找了十幾分鐘的認證方法,結果啥也沒改,突然又登錄成功了,莫名其妙的,同事說可能是 Redis 快取的問題,
圖片顯示有點 bug,不在本文討論范圍!
尾聲
如果用的 UI 是 iBase4J-UI-DataTables ,登錄時還會遇到傳不了參的問題,
可以先在后臺把密碼寫死,湊合著用??以后再去修復 Bug,方法如下:
模塊 iBase4J-SYS-Web ,
類 org.ibase4j.web.LoginController ,
方法 login ,在方法內第一行加入以下代碼,
user.setAccount("admin");
user.setPassword("96e79218965eb72c92a549dd5a330112");
簡單粗暴!
好了,本文到此結束,鼓掌!
最后再吃點瓜: 警惕掛著開源的招牌到處坑蒙拐騙的垃圾專案,比如iBase4J

碼農致富. 開源專案學習之(二)------iBase4J環境搭建 [Z].CSDN,2018-01-10 ??
易水. 如何解決iBase4J登錄沒有反應的問題 [Z].知乎,2021-06-01 ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/458227.html
標籤:其他
