日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于JWT(Json Web Token)的思考及使用心得

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于JWT(Json Web Token)的思考及使用心得 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是JWT?

JWT(Json Web Token)是一個開放的數據交換驗證標準rfc7519(php 后端實現JWT認證方法一般用來做輕量級的API鑒權。由于許多API接口設計是遵循無狀態的(比如Restful),所以JWT是Cookie Session這一套機制的替代方案。

組成

JWT由三部分組成頭部(header)、載荷(payload)、簽名(signature)。頭部定義類型和加密方式;載荷部分放不是很重要的數據;簽名使用定義的加密方式加密base64后的header和payload和一段你自己的加密key。最后的token由base64(header).base64(payload).base64(signatrue)組成。

使用方式

平時需要鑒權的接口需要傳這個token,可以post字段提交,但是一般建議放在header頭中 ,因為JWT一般配合https使用,這樣就萬無一失。

為什么安全?

首先token是服務端簽發,然后驗證時是用同樣加密方式把header、payload和key再加密遍 然后看是不是和簽名一致 如果不一致就說明token是非法的 這里主要靠的是加密(比如HS256)難以被攻破 至少目前吧 另外不得不說這里的加密對服務器來說是一個開銷 這也是JWT的缺點

使用

我很早就聽說過JWT 但那時候還沒用上 感覺近幾年前后端分離思想加速了JWT的使用 MVC前置到前端(VUE、REACT)后端只用提供API API強調無狀態 自然而然使用了JWT這套方案

之前做小程序時 沒有絕對使用JWT這套方案 我把它簡化了下

最近開發的一套項目用的是Laravel做后端提供API服務,所以自然而然使用了JWT,使用的擴展是tymon/jwt-auth 關于這套擴展機制的具體使用可以參考這篇文章 寫的很不錯:https://laravel-china.org/art...

項目使用時的具體細節

JWT三個時間概念

JWT有三個時間概念: 過期時間 寬限時間 刷新時間

上面那文章說token過了過期時間是不可刷新的,但其實是可以刷新的,我這邊使用時可以(開啟了黑名單機制和1min寬限時間) 但是過了刷新時間不能刷新這是肯定的

token刷新

可以借用laravel的中間件實現自動刷新 服務端判斷過期了但是在刷新時間內主動刷新一次 并把新的token在Header頭中返回給客戶端

記住我功能

我感覺定義刷新時間(比如一個月) + token自動刷新機制這一套就是記住我功能

不能主動銷毀Token

默認JWT這套方案好像不可以主動剔除用戶的,因為服務端不會存token,只是驗證。這和session不一樣。 但是我感覺可以借用黑名單機制 來判斷 中間件中判斷該token在剔除黑名單中就銷毀token并返回鑒權失敗

單點登錄

結合緩存比如redis存客戶端標識是可以的

多套用戶權限機制

比如客戶端有用戶端和商家端兩套用戶機制(不同表),可以在auth.php定義兩個guard 分別指定對應的model Login邏輯單獨寫 比如auth('userApi') auth('corpApi') 可以拿到不同的guard 刷新中間件是可以共用的 不過router中的middleware方法可以指定具體的middleware

為什么不同權限體系的刷新中間件可以公用

感覺是jwt-auth實現了這機制 驗證token時會根據sub字段判斷 我base64decode兩個token的payload后發現sub一個是1 一個是2

如果有問題歡迎指正!

本文最早發布于Rootrl's blog https://rootrl.github.io/2018...

原文地址:https://segmentfault.com/a/1190000016588298

轉載于:https://www.cnblogs.com/lalalagq/p/9965347.html

總結

以上是生活随笔為你收集整理的关于JWT(Json Web Token)的思考及使用心得的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。