首頁  >  文章  >  web前端  >  如何在沒有外部程式庫的情況下在 JavaScript 中解碼 JWT 令牌?

如何在沒有外部程式庫的情況下在 JavaScript 中解碼 JWT 令牌?

Patricia Arquette
Patricia Arquette原創
2024-11-01 00:26:28875瀏覽

 How to Decode JWT Tokens in JavaScript Without External Libraries?

在沒有庫的情況下在JavaScript 中解碼JWT 令牌

解碼JWT(JSON Web 令牌)的有效負載對於存取和使用其聲明至關重要在前端應用程式中。以下是兩種無需借助庫即可解碼JWT 令牌的有效方法:

瀏覽器:

在瀏覽器環境中,我們可以採用以下步驟來提取JSON 負載:

  1. 使用點('.') 作為分隔符號將令牌分成三個部分。
  2. 使用 base64url (RFC 4648 §5) 解碼包含有效負載的第二部分).
  3. 將 base64url 編碼的有效負載解碼為 Unicode 文字字串。
  4. 將 Unicode 字串解碼為 JSON 物件。

JavaScript 程式碼:

<code class="javascript">function parseJwt(token) {
    const base64UrlPayload = token.split('.')[1];
    const base64Payload = base64UrlPayload.replace(/-/g, '+').replace(/_/g, '/');
    const jsonPayload = decodeURIComponent(window.atob(base64Payload).split('').map(c => {
        return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
    }).join(''));

    return JSON.parse(jsonPayload);
}</code>

Node.js:

Node.js 提供了一種簡單的方法來解碼JWT 負載:

  1. Split使用點('.') 作為分隔符號將令牌分為三個部分。
  2. 使用 Base64 解碼第二部分,其中包含有效負載。
  3. 轉換解碼後的有效負載,這是緩衝區對象,轉換為 JSON 對象。

JavaScript 程式碼:

<code class="javascript">function parseJwt(token) {
    const base64Payload = token.split('.')[1];
    const payloadBuffer = Buffer.from(base64Payload, 'base64');
    const payload = JSON.parse(payloadBuffer.toString());

    return payload;
}</code>

注意: 這些方法不會驗證簽名JWT 令牌。強烈建議使用函式庫進行簽名驗證,以確保token的真實性。

以上是如何在沒有外部程式庫的情況下在 JavaScript 中解碼 JWT 令牌?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn