<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 實(shí)現(xiàn) RESTful 快速開發(fā)后端腳手...

          共 6346字,需瀏覽 13分鐘

           ·

          2022-11-28 21:35

                              
                                

          大家好,我是寶哥 !

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

          一、背景

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

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

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

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

          二、項(xiàng)目特性
          1. 自定義 @Log 注解自動(dòng)記錄日志到數(shù)據(jù)庫。

          2. 自定義 @Pass 注解接口不用進(jìn)行認(rèn)證身份。

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

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

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

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

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

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

          ? 2. 在之后需要驗(yàn)證身份的請求的 Headers 中添加 Authorization 和登錄時(shí)返回的 token 令牌。

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

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

          四、運(yùn)行項(xiàng)目

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

          123f91074ed095d9ccf8c454b70dc6f8.webp
          • 通過 git 下載源碼,本項(xiàng)目基于 JDK1.8
          • 采用 Maven 項(xiàng)目管理,模塊化,導(dǎo)入 IDE 時(shí)直接選定 liugh-parent 的 pom 導(dǎo)入
          • 創(chuàng)建數(shù)據(jù)庫 liugh,數(shù)據(jù)庫編碼為 UTF-8,執(zhí)行 liugh.sql 文件,初始化數(shù)據(jù)
          • 修改 application-dev.properties,更新 MySQL 賬號和密碼
          • Eclipse、IDEA 運(yùn)行 SpringbootApplication.java,則可啟動(dòng)項(xiàng)目?;蛟?liugh-parent 目錄下運(yùn)行命令 mvn clean package,然后在 liugh-web/target 目錄下運(yùn)行 java -jar liugh-web.jar 命令
          • 另外,搜索公眾號Linux就該這樣學(xué)后臺回復(fù)“猴子”,獲取一份驚喜禮包。
          • 啟動(dòng)一個(gè) redis 服務(wù)
          • 訪問登錄接口:localhost:8081/api/login
          • f1b74a4d21da0eb12568212e27800297.webp

          • 賬號密碼:13888888888/123456
          • 獲取 token 訪問其他接口
          • 注意!!!!! 訪問的接口 url 統(tǒng)一會(huì)加上 / api/v1; 編譯器請安裝 lombok 插件, 不然會(huì)報(bào)紅

          運(yùn)行截圖:

          b31826c637d4d3dfa0843eea4d288d56.webp

          這個(gè)項(xiàng)目注釋完整,并且自定義了啟動(dòng)圖案~

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

                              

          精彩推薦:

          這款牛逼哄哄的企業(yè)級后臺系統(tǒng)開源了!

          支付系統(tǒng)就該這么設(shè)計(jì)(萬能通用),穩(wěn)的一批!

          5 款必備的免費(fèi)在線畫圖工具!超級好用

          SpringBoot 代碼混淆真香,再也不用擔(dān)心反編譯代碼泄露...

          公司系統(tǒng)太多,能不能實(shí)現(xiàn)賬號互通?

          SpringBoot中接口加密解密統(tǒng)一處理!

          瀏覽 91
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  国产91 白丝在线播放 | 亚洲无码中文视频 | 青春草在线视频免费观看 | 午夜视频一区 | 678五月丁香亚洲 |