bootshiro & usthe
bootshiro
是基於springboot+shiro+jwt
的真正restful URL
資源無狀態認證權限管理系統的后端usthe
是restful URL
資源無狀態認證權限管理系統的前端,基於angular+typeScript+adminLte
- 區別於一般,提供頁面可配置式的,動態的
restful api
安全管理支持 - 數據傳輸動態秘鑰加密,
jwt
過期刷新,用戶操作監控等 加固應用安全
使用和一些約定
- 您使用此項目在后端開發好
api
后,需要在前端頁面 資源配置->API管理 新增基於ant
匹配風格的api
(約定沒有配置的api沒有保護) eg:
獲取角色關聯的對應用戶列表rest-url
為/role/user/{roleId}/{currentPage}/{pageSize}
訪問方式為GET
, 您需要在頁面新增api:
/role/user/*/*/*
GET
方式- 自定義
url
匹配鏈約定為url=
url+"=="+httpMethod
- 頁面添加了
api
后,您需要在 資源配置->角色管理 配置您想要授權角色的API,菜單,關聯用戶等資源(約定授權給auth_anon
角色的api
可以被所有人訪問,注意沒有授權給任何角色的api是可以被任何人訪問的) - 授權菜單在第一次登錄時已經獲取存儲到
sessionStorage
防止重復獲取,您授權變更菜單之后想要看的效果需要關閉頁面重新打開(或者清除sessionStorage
之后會自動獲取授權菜單) - have fun
項目的基礎框架設計:
總的長這樣:
前端usthe
基於angular5 + angular-cli + typeScript + rxjs + bootstrap + adminLTE
,踐行angular最佳實踐。
過程中node,webpack等有用到過,但我不熟。。。
后端bootshiro
基於springboot + apache shiro + mybatis
框架,restful風格api,自定義狀態碼,json-web-token,druid數據庫連接池,swagger文檔生成,redis存儲refreshtoken和動態秘鑰,maven,MD5單向加密和AES雙向等。。。
gate -nginx
這個nginx作為反向代理服務器,解決了跨域,真實IP頭(現服務器端支持跨域可不用nginx)。另一個nginx作為angular應用服務器,tomcat作為bootshiro的服務器。
反向代理的nginx.conf見: conf
持續集成
流程長這樣~:
詳細實現技術見另一篇: docker學習
相關文檔
- 前后端分離實踐
- api權限管理系統與前后端分離實踐
- 基於shiro的改造集成真正支持restful請求
- 簽發的用戶認證token超時刷新策略
- 傳輸密碼動態加密解密
ps(之前是寫在下面的太長有點亂)
部署
1 IDE啟動調試
1.1 bootshiro
- 下載demo解壓bootshiro
- 用idea導入bootshiro
- 更改開發環境mysql數據庫和redis地址(前提安裝數據庫並導入usthe.sql創建數據庫usthe)
- 運行BootshiroApplication
- bootshiro就可以提供api了 http://localhost:8080
- 推薦使用postman進行api調試
1.2 usthe
- 下載demo解壓usthe
- 用WebStorm導入
- 需要node環境
- 安裝angular cli工具 npm install -g @angular/cli@latest
- 進入項目目錄 npm install
- 修改/src/environments/environments.ts開發環境的apiBaseUrl
- 前提您已經安裝部署了nginx並配置相關代理url
- ng serve 啟動
- 前提啟動了后端bootshiro
- 訪問瀏覽器ok http://localhost:4200
2 docker本地啟動
2.1 bootshiro
- 更改生產環境mysql數據庫和redis地址(前提安裝數據庫並導入usthe.sql創建數據庫usthe)
- 前提已經存在maven環境,docker環境(docker常用看這里)
- mvn clean install -Dmaven.test.skip=true打出jar包
- 在項目目錄下 docker build -t bootshiro:1.0 .
- docker images看是否生成鏡像成功
- 運行 docker run -d -p 8080:8080 --name haiGirl bootshiro:1.0
- docker ps 就可以看見您的haiGirl了
- bootshiro就可以提供api了 http://localhost:8080
2.2 usthe
- 修改/src/environments/environments.prod.ts生產環境的apiBaseUrl
- 前提您已經安裝部署了nginx並配置了相關代理url,也存在docker環境(docker常用看這里)
- 在項目目錄下 docker build -t usthe:1.0 .
- docker images看是否生成鏡像成功
- 運行 docker run -d -p 4300:4200 --name haiLady usthe:1.0
- docker ps 就可以看見您的haiLady了
- 前提部署了后端bootshiro
- 訪問瀏覽器 http://localhost
3 jenkins+docker持續集成持續部署CICD
3.1 bootshiro
- 更改生產和開發環境mysql數據庫和redis地址(前提安裝數據庫並導入usthe.sql創建數據庫usthe)
- 搭建CICD環境有點繁瑣,看這里最下面
- 參照搭建完成后,bootshiro對應的jenkins下運行shell:
#!/bin/bash
#build in jenkins sh
#docker docker hub倉庫地址,之后把生成的鏡像上傳到 registry or docker hub
REGISTRY_URL=127.0.0.1:5000
#docker login --username tomsun28 --password xxxx
#根據時間生成版本號
TAG=$REGISTRY_URL/$JOB_NAME:`date +%y%m%d-%H-%M`
#使用maven 鏡像進行編譯 打包出 jar 文件
docker run --rm --name mvn -v /opt/dockerWorkspace/maven:/root/.m2 \
-v /opt/dockerWorkspace/jenkins_home/workspace/$JOB_NAME:/usr/src/mvn -w /usr/src/mvn/ \
tomsun28/maven:1.0 mvn clean install -Dmaven.test.skip=true
#使用放在項目下面的Dockerfile打包生成鏡像
docker build -t $TAG $WORKSPACE/.
docker push $TAG
docker rmi $TAG
#判斷之前運行的容器是否還在,在就刪除
if docker ps -a | grep -i $JOB_NAME;then
docker rm -f $JOB_NAME
fi
#用最新版本的鏡像運行容器
docker run -d -p 8085:8080 --name $JOB_NAME -v /opt/dockerWorkspace/tomcat/$JOB_NAME/logs:/opt/tomcat/logs $TAG
3.2 usthe
- 更改生產和開發環境對應的/src/environments/environments apiBaseUrl
- 搭建CICD環境有點繁瑣,看這篇最下面
- 參照搭建完成后,usthe對應的jenkins下運行shell:
#!/bin/bash
#build in jenkins sh
#docker docker hub倉庫地址,之后把生成的鏡像上傳到 registry or docker hub
REGISTRY_URL=127.0.0.1:5000
#docker login --username tomsun28 --password xxxx
#根據時間生成版本號
TAG=$REGISTRY_URL/$JOB_NAME:`date +%y%m%d-%H-%M`
#使用放在項目下面的Dockerfile打包生成鏡像
docker build -t $TAG $WORKSPACE/.
docker push $TAG
docker rmi $TAG
#判斷之前運行的容器是否還在,在就刪除
if docker ps -a | grep -i $JOB_NAME;then
docker rm -f $JOB_NAME
fi
#用最新版本的鏡像運行容器
docker run -d -p 4200:80 --name $JOB_NAME $TAG
web部分介紹:
技術框架部分
springboot 前后端分離那種,后台springboot,前端angular,數據庫操作使用 mybatis
功能介紹:
- 菜單管理
- API管理,對所要保護的后台api管理,后台的api需要在這里登記
- 角色管理,包含角色管理,角色所授權菜單管理,角色所授權api管理,角色關聯用戶管理
- 用戶日志
### 項目結構
下載后,看到如下的文件包:
項目代碼結構圖如下:
其中tomsun28-bootshiro-master.zip結構如下:
其中tomsun28-usthe-master.zip結構如下:
效果展示
thanks:
Howieair的小豬圖標
zhangkaitao的跟我學shiro
網絡上前輩們的教程文章開源項目
基於shiro+jwt的真正rest url權限管理,前后端分離
注:本文著作權歸作者,由demo大師代發,拒絕轉載,轉載需要作者授權