基於shiro+jwt的真正rest url權限管理,前后端分離


代碼地址如下:
http://www.demodashi.com/demo/13277.html

bootshiro & usthe

  • bootshiro是基於springboot+shiro+jwt的真正restful URL資源無狀態認證權限管理系統的后端
  • ustherestful 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學習

相關文檔


部署


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權限管理,前后端分離

代碼地址如下:
http://www.demodashi.com/demo/13277.html

注:本文著作權歸作者,由demo大師代發,拒絕轉載,轉載需要作者授權


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM