先後端分離已經成爲互聯網項目開發標準,它會爲之後的大型分佈式架構打下基礎。SpringBoot使編碼配置部署都變得簡單,愈來愈多的互聯網公司已經選擇SpringBoot做爲微服務的入門級微框架。java
Mybatis-Plus是一個 Mybatis 的加強工具,有代碼生成器,而且提供了相似hibernate的單表CRUD操做,又保留了mybatis的特性支持定製化 SQL。git
Apache Shiro是一款強大易用的Java安全框架,Java官方推薦使用Shiro,它比Spring Security更簡單易用,Spring本身的系列Spring side4也把權限擴建換成Shiro了。github
如今API愈來愈流行,如何安全保護這些API? JSON Web Tokens(JWT)能提供基於JSON格式的安全認證。JWT能夠跨不一樣語言,自帶身份信息,而且很是容易傳遞。web
1.自定義@Log註解自動記錄日誌到數據庫。redis
2.自定義@Pass註解接口不用進行認證身份。算法
3.使用JSONObject統一獲取body請求參數,減小實體類的數量。完成自定義@ValidationParam註解驗證請求參數是否爲空。sql
4.使用bcrypt算法加密密碼,著名代碼託管網站Github和美國軍方防火牆一樣採用此算法,靠bcrypt算法會成功保住密碼強度不算很高的大部分帳戶。數據庫
5.搭配Shiro註解配置權限,高度靈活,提供按鈕級別的權限控制,後端接口只驗證權限,不看角色。用自定義@CurrentUser註解獲取當前登陸用戶,Controlle層統一異常處理:編程
6.用SpringAOP切面編程進行聲明式事務,過濾請求參數,防止XSS攻擊。後端
7.使用POST請求登陸返回token和權限信息(service層增刪改方法命名規範會自動加上事物),保證請求無狀態,返回實體若是屬性爲空不顯示。
1.填寫用戶名密碼用POST請求訪問/login接口,返回token令牌等信息,失敗則直接跳轉401錯誤頁面。
2.在以後須要驗證身份的請求的Headers中添加Authorization和登陸時返回的token令牌。
3.服務端進行token認證,失敗跳轉401頁面。
4.用JWT作認證(登陸),Shiro作受權。
項目結構:
運行截圖:
彩蛋:項目註釋完整,而且自定義了啓動圖案~
GitHub地址:https://github.com/qq53182347/liugh-parent
第一次作本身的項目,經驗不足,若是你們有什麼好的意見或批評,請務必issue一下。