一、背景前后端分離已經(jīng)成為互聯(lián)網(wǎng)項目開發(fā)標準,它會為以后的大型分布式架構(gòu)打下基礎。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ù)是否為空。 4.使用bcrypt算法加密密碼,著名代碼托管網(wǎng)站Github和美國軍方防火墻同樣采用此算法,靠bcrypt算法會成功保住密碼強度不算很高的大部分賬戶。 5.搭配Shiro注解配置權(quán)限,高度靈活,提供按鈕級別的權(quán)限控制,后端接口只驗證權(quán)限,不看角色。用自定義@CurrentUser注解獲取當前登錄用戶,Controlle層統(tǒng)一異常處理: 6.用SpringAOP切面編程進行聲明式事務,過濾請求參數(shù),防止XSS攻擊。 7.使用POST請求登錄返回token和權(quán)限信息(service層增刪改方法命名規(guī)范會自動加上事物),保證請求無狀態(tài),返回實體如果屬性為空不顯示。 三、程序邏輯1.填寫用戶名密碼用POST請求訪問/login接口,返回token令牌等信息,失敗則直接跳轉(zhuǎn)401錯誤頁面。 2.在之后需要驗證身份的請求的Headers中添加Authorization和登錄時返回的token令牌。 3.服務端進行token認證,失敗跳轉(zhuǎn)401頁面。 4.用JWT做認證(登錄),Shiro做授權(quán)。 四、運行項目項目結(jié)構(gòu):
運行截圖: 彩蛋:項目注釋完整,并且自定義了啟動圖案~
|
|
|
來自: 壞尐孒95qanplv > 《Java基基-微信收藏》