
掌握API建模:基本概念和實踐
以上Swagger內(nèi)容不是必須,如果小伙伴不想用Swagger進(jìn)行測試,直接使用類似于Postman的工具也是可以的,測試方式不沖突,所以小伙伴們別跑,咱們繼續(xù)往下看↓↓↓
使用組件的經(jīng)典三步走:安裝包->注冊組件->注冊中間件;jwt集成使用如下:
通過以上簡單三步操作,已經(jīng)將Jwt集成到項目中,接下來開始用它來保護(hù)我們的Api接口:
如上,通過簡單的在接口上增加[Authorize]特性就能保護(hù)起來啦,現(xiàn)在只能帶“身份證”才能玩了,那系統(tǒng)中得有一個頒發(fā)”身份證”的地方,供系統(tǒng)識別驗證,一般都會將其放在登錄接口的地方,當(dāng)用戶驗證成功之后,就生成對應(yīng)的Token給客戶端,客戶端拿著這個Token就可以當(dāng)“身份證”來調(diào)用接口啦,看如下代碼:
這個錯誤應(yīng)該是剛開始經(jīng)常遇到的,必須要求密鑰是大于等于16個字符,否則就會失敗。修改密鑰長度如下:
然后運行,重新登錄獲取Token,如下圖:
可以看到,上面代碼中的公共信息部分應(yīng)該提取到公共配置信息中,不然要改幾個地方,所以在程序開發(fā)過程中,小伙伴么盡量不要硬編碼,不然就等于給自己找維護(hù)工作。
Token已經(jīng)生成了,那怎么用?現(xiàn)在Swagger不支持輸入Token,可以使用postman類似的工具進(jìn)行接口測試,如下:
輸入Token,成功獲取信息:
Token的使用本質(zhì)其實是在Header中增加了一個Authorization頭,如下圖:
Authorization中的值為Bearer+’ ‘+Token,中間一定要有一個空格。同理,前端調(diào)用API接口的時候也是在請求頭中增加Authorization即可。
拿到Token,就可以訪問受保護(hù)的API了,現(xiàn)在應(yīng)該了解一下生成的Token是否和剛開始說的理論一樣,同時可以通過jwt官網(wǎng)進(jìn)行解析查看具體內(nèi)容:
通過官網(wǎng)解析看看內(nèi)容:
通過上面得知,沒有經(jīng)過業(yè)務(wù)加密的Token,是可以進(jìn)行解析的,所以不建議把一些敏感信息放在Payload中。但是對于認(rèn)證來說是安全,因為校驗簽名是需要密鑰的,而密鑰是存在服務(wù)器端,一般人肯定是不知道的。
對于Token的過期,有一個點,即過期滑動時間,如果不設(shè)置,默認(rèn)是五分鐘,即當(dāng)設(shè)置Token有效期到期時,不會馬上失效,而是再過五分鐘才失效,如下例:
過了幾分鐘后還是沒有過期,如下:
過六分之后,再訪問,發(fā)現(xiàn)Token才失效,如果覺得過期滑動時間不滿足需求,可以進(jìn)行設(shè)置,如下:
這里運行效果就不截圖了,小伙伴試試吧!!!?這里關(guān)于Jwt的集成先說這么多,肯定是沒有說完的,還有權(quán)限驗證那塊,單獨整理一篇說吧,內(nèi)容也不少。
既然都用到Swagger,肯定是希望在Swagger上直接測試,來來來,繼續(xù)往下看看↓↓↓
在注冊Swagger組件時進(jìn)行相關(guān)配置:
運行結(jié)果如下:
點擊小鎖,彈出框可進(jìn)行Token輸入:
輸入Token授權(quán)之后就可以調(diào)用保護(hù)的接口,可以很方便的進(jìn)行測試,這里就不截圖演示了,小伙伴們動手試試吧。
附加知識點:
由于SecurityRequirementsOperationFilter默認(rèn)將securitySchemaName?設(shè)置為”oauth2″,所以在Swagger中加入描述的時候需要指定第一個參數(shù)為”oauth2″,源碼如下:
也可以換成其他方式,參照實現(xiàn)的方式2,兩種方式差不多,如下圖:
注意點:
關(guān)于權(quán)限的驗證單獨再整理一篇分享,這里就先到這吧;旅游或回家的小伙伴們應(yīng)該都回到自己的住處了吧,好好休息休息,又要開始擼碼啦。
文章轉(zhuǎn)自微信公眾號@Code綜藝圈