<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Spring Boot+JWT+Shiro+MyBatisPlus 實現(xiàn) RESTful 快速開發(fā)后端腳手架

          共 1724字,需瀏覽 4分鐘

           ·

          2022-11-21 12:41

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

          一、背景

          前后端分離已經(jīng)成為互聯(lián)網(wǎng)項目開發(fā)標準,它會為以后的大型分布式架構(gòu)打下基礎(chǔ)。SpringBoot 使編碼配置部署都變得簡單,越來越多的互聯(lián)網(wǎng)公司已經(jīng)選擇 SpringBoot 作為微服務的入門級微框架。

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

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

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

          二、項目特性

          1. 自定義 @Log 注解自動記錄日志到數(shù)據(jù)庫。

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

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

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

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

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

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

          三、程序邏輯

          1. 填寫用戶名密碼用 POST 請求訪問 / login 接口,返回 token 令牌等信息,失敗則直接跳轉(zhuǎn) 401 錯誤頁面。微信搜索公眾號:Java后端編程,回復:java 領(lǐng)取資料 。

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

          1. 服務端進行 token 認證,失敗跳轉(zhuǎn) 401 頁面。

          2. 用 JWT 做認證(登錄),Shiro 做授權(quán)。

          四、運行項目

          項目結(jié)構(gòu):

          • 通過 git 下載源碼,本項目基于 JDK1.8
          • 采用 Maven 項目管理,模塊化,導入 IDE 時直接選定 liugh-parent 的 pom 導入
          • 創(chuàng)建數(shù)據(jù)庫 liugh,數(shù)據(jù)庫編碼為 UTF-8,執(zhí)行 liugh.sql 文件,初始化數(shù)據(jù)
          • 修改 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 統(tǒng)一會加上 / api/v1; 編譯器請安裝 lombok 插件, 不然會報紅

          運行截圖:

          這個項目注釋完整,并且自定義了啟動圖案~

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

          作者:我叫劉半仙

          來源:OSC社區(qū)

          瀏覽 51
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲欧美黄片 | 玖玖国产在线 | 久久99国产精品成人欧美 | 另类网站 | 操逼逼网站 |