設計一種在JavaScript 中解碼JWT 令牌的方法
在JavaScript 中可以在不使用庫的情況下解碼JWT 令牌。這可以透過手動從令牌中提取有效負載來實現。
有效負載萃取步驟:
1。 Base64 解碼:
使用「.」將令牌分成三個部分(標頭、有效負載、簽名)特性。使用 Base64URL 編碼解碼第二部分(有效負載),分別用“-”和“_”替換“ ”和“/”。
2. Unicode 文字替換:
解碼後的有效負載是 Unicode 文字序列。將任何不可列印的字元(% 符號)替換為其對應的 ASCII 代碼(例如,空格)。
3. JSON解析:
最後將替換後的文字解析為JSON,得到payload物件。
實作:
瀏覽器:
<code class="javascript">function parseJwt(token) { var base64Url = token.split('.')[1]; var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); var jsonPayload = decodeURIComponent(window.atob(base64).split('').map(function(c) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); }).join('')); return JSON.parse(jsonPayload); }</code>
Node.js:
<code class="javascript">function parseJwt(token) { return JSON.parse(Buffer.from(token.split('.')[1], 'base64').toString()); }</code>
Node.js:
注意: 解碼有效負載不會驗證令牌的簽章。它假設令牌沒有被篡改。以上是如何在 JavaScript 中手動解碼 JWT 令牌?的詳細內容。更多資訊請關注PHP中文網其他相關文章!