SpringBoot+JWT+Shiro+MybatisPlus實Restful快速開發後端腳手架

點擊上方 "程序員小樂"關注, 星標或置頂一起成長

每天凌晨00點00分, 第一時間與你相約


每日英文

Sleeping is nice. You forget about everything for a little while.

還是睡覺好,能暫時忘掉一切煩惱。


每日掏心話

人生如夢,歲月匆匆,淡化了多少愛恨情愁。再卑微的夢想,都應得到內心的尊重,唯如此,才能直面那些嘲諷和打擊,演繹出自我的精彩。

來自:lywJee | 責編:樂樂

鏈接:cnblogs.com/lywJ/p/11252064.html

SpringBoot+JWT+Shiro+MybatisPlus實Restful快速開發後端腳手架

程序員小樂(ID:study_tech)第 846 次推文 圖片來自百度


往日回顧:不懂 Zookeeper?沒關係,看這篇就夠了


正文


一、背景

前後端分離已經成為互聯網項目開發標準,它會為以後的大型分佈式架構打下基礎。SpringBoot使編碼配置部署都變得簡單,越來越多的互聯網公司已經選擇SpringBoot作為微服務的入門級微框架。

Mybatis-Plus是一個 Mybatis 的增強工具,有代碼生成器,並且提供了類似hibernate的單表CRUD操作,又保留了mybatis的特性支持定製化 SQL。

Apache Shiro是一款強大易用的Java安全框架,Java官方推薦使用Shiro,它比Spring Security更簡單易用,Spring自己的系列Spring side4也把權限擴建換成Shiro了。

現在API越來越流行,如何安全保護這些API?JSON Web Tokens(JWT)能提供基於JSON格式的安全認證。JWT可以跨不同語言,自帶身份信息,並且非常容易傳遞。

二、項目特性

1.自定義@Log註解自動記錄日誌到數據庫。

2.自定義@Pass註解接口不用進行認證身份。

3.使用JSONObject統一獲取body請求參數,減少實體類的數量。完成自定義@ValidationParam註解驗證請求參數是否為空。

SpringBoot+JWT+Shiro+MybatisPlus實Restful快速開發後端腳手架

4.使用bcrypt算法加密密碼,著名代碼託管網站Github和美國軍方防火牆同樣採用此算法,靠bcrypt算法會成功保住密碼強度不算很高的大部分賬戶。

5.搭配Shiro註解配置權限,高度靈活,提供按鈕級別的權限控制,後端接口只驗證權限,不看角色。用自定義@CurrentUser註解獲取當前登錄用戶,Controlle層統一異常處理:

SpringBoot+JWT+Shiro+MybatisPlus實Restful快速開發後端腳手架

6.用SpringAOP切面編程進行聲明式事務,過濾請求參數,防止XSS攻擊。

7.使用POST請求登錄返回token和權限信息(service層增刪改方法命名規範會自動加上事物),保證請求無狀態,返回實體如果屬性為空不顯示。

SpringBoot+JWT+Shiro+MybatisPlus實Restful快速開發後端腳手架

三、程序邏輯

1.填寫用戶名密碼用POST請求訪問/login接口,返回token令牌等信息,失敗則直接跳轉401錯誤頁面。

2.在之後需要驗證身份的請求的Headers中添加Authorization和登錄時返回的token令牌。

3.服務端進行token認證,失敗跳轉401頁面。

4.用JWT做認證(登錄),Shiro做授權。

四、運行項目

項目結構:

SpringBoot+JWT+Shiro+MybatisPlus實Restful快速開發後端腳手架


  • 通過git下載源碼,本項目基於JDK1.8

  • 採用Maven項目管理,模塊化,導入IDE時直接選定liugh-parent的pom導入

  • 創建數據庫liugh,數據庫編碼為UTF-8,執行liugh.sql文件,初始化數據

  • 修改application-dev.properties,更新MySQL賬號和密碼

  • Eclipse、IDEA運行SpringbootApplication.java,則可啟動項目。或在liugh-parent目錄下運行命令mvn clean package,然後在liugh-web/target目錄下運行java -jar liugh-web.jar命令

  • 啟動一個redis服務

  • 訪問登錄接口:localhost:8081/api/login

  • 賬號密碼:13888888888/123456
    -獲取token訪問其他接口


注意!!!!!訪問的接口url統一會加上/api/v1;編譯器請安裝lombok插件,不然會報紅

運行截圖:

SpringBoot+JWT+Shiro+MybatisPlus實Restful快速開發後端腳手架

彩蛋:項目註釋完整,並且自定義了啟動圖案~

GitHub地址:github.com/qq53182347/liugh-parent


歡迎在留言區留下你的觀點,一起討論提高。如果今天的文章讓你有新的啟發,學習能力的提升上有新的認識,歡迎轉發分享給更多人。


猜你還想看


阿里、騰訊、百度、華為、京東最新面試題彙集

徹底搞懂MySQL分區,看這篇就對了!

一個基於 Spring Boot 的項目骨架

分佈式事務之 RocketMQ 事務消息詳解

關注訂閱號「程序員小樂」,收看更多精彩內容
嘿,你在看嗎?


分享到:


相關文章: