在沒有 Meilisearch SDK 的情況下產生租戶令牌

    本指南說明使用 node-jsonwebtoken(第三方函式庫)建立租戶令牌的主要步驟。

    需求

    使用 jsonwebtoken 產生租戶令牌

    建立租戶令牌酬載

    首先,建立一組搜尋規則

    {
      "INDEX_NAME": {
        "filter": "ATTRIBUTE = VALUE"
      }
    }
    

    接下來,找到您的預設搜尋 API 金鑰。查詢 取得一個 API 金鑰端點並檢查 uid 欄位以取得您 API 金鑰的 UID

    curl \
      -X GET 'https://127.0.0.1:7700/keys/API_KEY' \
      -H 'Authorization: Bearer MASTER_KEY'
    

    為了獲得最大的安全性,您也應該為您的租戶令牌設定過期日。以下範例將令牌設定為在其建立後 20 分鐘過期

    parseInt(Date.now() / 1000) + 20 * 60
    

    建立租戶令牌

    首先,在您的應用程式中包含 jsonwebtoken。接下來,組裝令牌酬載並將其傳遞給 jsonwebtokensign 方法

    const jwt = require('jsonwebtoken');
    
    const apiKey = 'API_KEY';
    const apiKeyUid = 'API_KEY_UID';
    const currentUserID = 'USER_ID';
    const expiryDate = parseInt(Date.now() / 1000) + 20 * 60; // 20 minutes
    
    const tokenPayload = {
      searchRules: {
        'INDEX_NAME': {
          'filter': `user_id = ${currentUserID}`
         }
      },
      apiKeyUid: apiKeyUid,
      exp: expiryDate
    };
    
    const token = jwt.sign(tokenPayload, apiKey, {algorithm: 'HS256'});
    

    sign 需要酬載、Meilisearch API 金鑰和加密演算法。Meilisearch 支援以下加密演算法:HS256HS384HS512

    您的租戶令牌現在可以使用了。

    使用其他函式庫

    雖然此範例使用 jsonwebtoken(一個 Node.js 套件),但您可以使用任何您覺得舒適的語言中的任何相容 JWT 的函式庫。

    使用租戶令牌發出搜尋請求

    在簽署令牌後,您可以使用它發出搜尋查詢,就像您使用 API 金鑰一樣。

    curl \
      -X POST 'https://127.0.0.1:7700/indexes/patient_medical_records/search' \
      -H 'Authorization: Bearer TENANT_TOKEN'