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

代碼地址以下:
http://www.demodashi.com/demo/13277.htmlhtml

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等有用到過,但我不熟。。。node

後端bootshiro

基於springboot + apache shiro + mybatis框架,restful風格api,自定義狀態碼,json-web-token,druid數據庫鏈接池,swagger文檔生成,redis存儲refreshtoken和動態祕鑰,maven,MD5單向加密和AES雙向等。。。mysql

gate -nginx

這個nginx做爲反向代理服務器,解決了跨域,真實IP頭(現服務器端支持跨域可不用nginx)。另外一個nginx做爲angular應用服務器,tomcat做爲bootshiro的服務器。webpack

反向代理的nginx.conf見: confnginx

持續集成

流程長這樣~:
git

詳細實現技術見另外一篇: docker學習github

## 相關文檔

## 部署

1 IDE啓動調試web

1.1 bootshiroredis

  • 下載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大師代發,拒絕轉載,轉載須要做者受權

相關文章
相關標籤/搜索