以上Swagger內容不是必須,如果小伙伴不想用Swagger進行測試,直接使用類似于Postman的工具也是可以的,測試方式不沖突,所以小伙伴們別跑,咱們繼續往下看↓↓↓

使用組件的經典三步走:安裝包->注冊組件->注冊中間件;jwt集成使用如下:

通過以上簡單三步操作,已經將Jwt集成到項目中,接下來開始用它來保護我們的Api接口:

如上,通過簡單的在接口上增加[Authorize]特性就能保護起來啦,現在只能帶“身份證”才能玩了,那系統中得有一個頒發”身份證”的地方,供系統識別驗證,一般都會將其放在登錄接口的地方,當用戶驗證成功之后,就生成對應的Token給客戶端,客戶端拿著這個Token就可以當“身份證”來調用接口啦,看如下代碼:

這個錯誤應該是剛開始經常遇到的,必須要求密鑰是大于等于16個字符,否則就會失敗。修改密鑰長度如下:

然后運行,重新登錄獲取Token,如下圖:

可以看到,上面代碼中的公共信息部分應該提取到公共配置信息中,不然要改幾個地方,所以在程序開發過程中,小伙伴么盡量不要硬編碼,不然就等于給自己找維護工作。

Token已經生成了,那怎么用?現在Swagger不支持輸入Token,可以使用postman類似的工具進行接口測試,如下:

輸入Token,成功獲取信息:

Token的使用本質其實是在Header中增加了一個Authorization頭,如下圖:

Authorization中的值為Bearer+’ ‘+Token,中間一定要有一個空格。同理,前端調用API接口的時候也是在請求頭中增加Authorization即可。

拿到Token,就可以訪問受保護的API了,現在應該了解一下生成的Token是否和剛開始說的理論一樣,同時可以通過jwt官網進行解析查看具體內容:

通過官網解析看看內容:

通過上面得知,沒有經過業務加密的Token,是可以進行解析的,所以不建議把一些敏感信息放在Payload中。但是對于認證來說是安全,因為校驗簽名是需要密鑰的,而密鑰是存在服務器端,一般人肯定是不知道的。

對于Token的過期,有一個點,即過期滑動時間,如果不設置,默認是五分鐘,即當設置Token有效期到期時,不會馬上失效,而是再過五分鐘才失效,如下例:

過了幾分鐘后還是沒有過期,如下:

過六分之后,再訪問,發現Token才失效,如果覺得過期滑動時間不滿足需求,可以進行設置,如下:

這里運行效果就不截圖了,小伙伴試試吧!??!?這里關于Jwt的集成先說這么多,肯定是沒有說完的,還有權限驗證那塊,單獨整理一篇說吧,內容也不少。

Swagger小擴展

既然都用到Swagger,肯定是希望在Swagger上直接測試,來來來,繼續往下看看↓↓↓

在注冊Swagger組件時進行相關配置:

運行結果如下:

點擊小鎖,彈出框可進行Token輸入:

輸入Token授權之后就可以調用保護的接口,可以很方便的進行測試,這里就不截圖演示了,小伙伴們動手試試吧。

附加知識點:

由于SecurityRequirementsOperationFilter默認將securitySchemaName?設置為”oauth2″,所以在Swagger中加入描述的時候需要指定第一個參數為”oauth2″,源碼如下:

也可以換成其他方式,參照實現的方式2,兩種方式差不多,如下圖:

注意點:

總結

關于權限的驗證單獨再整理一篇分享,這里就先到這吧;旅游或回家的小伙伴們應該都回到自己的住處了吧,好好休息休息,又要開始擼碼啦。

文章轉自微信公眾號@Code綜藝圈

上一篇:

.NET Core Web API + Vue By Linux and Windows 部署方案知識點總結

下一篇:

Springboot整合GraphQL使你的API更易理解可讀性更強
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費