Spring Boot+JWT+Shiro+MyBatis實現Restful快速開發後端腳手架

題外話:

前幾天,有不少人問我,有沒有基於 SpringBoot 的腳手架項目。今天我就推薦一個基本的框架腳手架,特別是學會使用 jwt + shiro 的權限組合!其實有了 SpringBoot 後,項目搭建的難度一降再降,可還是有人想偷懶,就怕你幾年後會後悔!

一、背景

前後端分離已經成爲互聯網項目開發標準,它會爲以後的大型分佈式架構打下基礎。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 註解驗證請求參數是否爲空。

Spring Boot+JWT+Shiro+MyBatis實現Restful快速開發後端腳手架

 

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

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

Spring Boot+JWT+Shiro+MyBatis實現Restful快速開發後端腳手架

 

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

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

Spring Boot+JWT+Shiro+MyBatis實現Restful快速開發後端腳手架

 

三、程序邏輯

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

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

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

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

四、運行項目

項目結構:

Spring Boot+JWT+Shiro+MyBatis實現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 插件, 不然會報紅

運行截圖:

Spring Boot+JWT+Shiro+MyBatis實現Restful快速開發後端腳手架

 

這個項目註釋完整,並且自定義了啓動圖案~

項目地址請轉發+關注,然後私信回覆“源碼”即可獲得免費領取方式!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章