Spring Security學習筆記之JSON Web Token實踐

宣告:本文參考:茶飲月的csdn文章:Spring Security學習記錄(四) —— JSON Web Token實踐(下)

上篇文章有朋友評論,如何使用token實現許可權驗證,今天就跟大家分享一下,僅供參考。

首先簡單介紹一下JSON web Token:簡稱JWT,本質是一個token,是一種緊湊的URL安全方法,用於在網路通訊的雙方之間傳遞。廢話不多說,直接上專案。

新建一個spring boot 專案,選擇依賴這塊注意一下,本文使用jpa進行資料庫操作,thymeleaf模板引擎

Spring Security學習筆記之JSON Web Token實踐

2。新增其他額外依賴

Spring Security學習筆記之JSON Web Token實踐

Spring Security學習筆記之JSON Web Token實踐

3。設定application。properties

Spring Security學習筆記之JSON Web Token實踐

4。新建實體類和上篇文章相同,在次不多贅述

5。新建JWT工具類,實現生成token,驗證token,從token中獲取使用者方法

Spring Security學習筆記之JSON Web Token實踐

Spring Security學習筆記之JSON Web Token實踐

Spring Security學習筆記之JSON Web Token實踐

Spring Security學習筆記之JSON Web Token實踐

6。SecurityContextHolder中儲存的是Authentication物件,所以需要在SysUser基礎封裝一層認證使用者

Spring Security學習筆記之JSON Web Token實踐

Spring Security學習筆記之JSON Web Token實踐

7。實現驗證Token的過濾器

Spring Security學習筆記之JSON Web Token實踐

這裡需要注意,原有的request是沒有setHeader方法的,在這需要自己實現一個request,MutableHttpServletRequest

Spring Security學習筆記之JSON Web Token實踐

這樣request就有setHeader方法了,可以將token放入傳輸

8。配置下Spring Security,主要就是關閉一些不用的過濾器,實現自己的驗證過濾器。

Spring Security學習筆記之JSON Web Token實踐

Spring Security學習筆記之JSON Web Token實踐

9。配置的主要內容就是這些,下面就是簡單的登入驗證了,首先是service層根據使用者名稱查詢使用者

Spring Security學習筆記之JSON Web Token實踐

這裡作為測試,選用session儲存token,實際可以根據需要選擇別的存取方式

10。controller,主要是登入方法,和一個測試只有管理員許可權的使用者才能使用的方法

Spring Security學習筆記之JSON Web Token實踐

到此,關鍵內容就介紹完了,下面執行測試一下效果

11。啟動專案訪問:http://localhost:8080/login

Spring Security學習筆記之JSON Web Token實踐

Spring Security學習筆記之JSON Web Token實踐

用管理員賬戶登入成功

Spring Security學習筆記之JSON Web Token實踐

管理員賬戶登入成功訪問/detail

Spring Security學習筆記之JSON Web Token實踐

普通使用者登入成功訪問/detil會跳轉到出錯頁面

Spring Security學習筆記之JSON Web Token實踐