使用官方 SDK 的租戶令牌

    使用官方 SDK 的租戶令牌有兩個步驟:產生租戶令牌,以及使用該令牌發出搜尋請求。

    需求

    使用官方 SDK 產生租戶令牌

    首先,匯入 SDK。然後建立一組搜尋規則

    {
      "patient_medical_records": {
        "filter": "user_id = 1"
      }
    }
    

    搜尋規則必須是一個物件,其中每個鍵對應於您實例中的索引。您可以為每個索引設定任意數量的篩選器。

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

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

    為了獲得最大的安全性,您還應該為租戶令牌定義過期日期。

    最後,將此資料傳送到您選擇的 SDK 的租戶令牌產生器

    import { generateTenantToken } from 'meilisearch/token'
    
    const searchRules = {
      patient_medical_records: {
        filter: 'user_id = 1'
      }
    }
    const apiKey = 'B5KdX2MY2jV6EXfUs6scSfmC...'
    const apiKeyUid = '85c3c2f9-bdd6-41f1-abd8-11fcf80e0f76'
    const expiresAt = new Date('2025-12-20') // optional
    
    const token = await generateTenantToken({ apiKey, apiKeyUid, searchRules, expiresAt })

    SDK 將返回有效的租戶令牌。

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

    建立令牌後,您必須將其發送到應用程式的前端。具體如何執行取決於您的特定設定。

    一旦租戶令牌可用,請使用它來驗證搜尋請求,就像它是 API 金鑰一樣

    const frontEndClient = new MeiliSearch({ host: 'https://127.0.0.1:7700', apiKey: token })
    frontEndClient.index('patient_medical_records').search('blood test')

    應用程式可以在搜尋時交替使用租戶令牌和 API 金鑰。例如,同一個應用程式可能會使用預設搜尋 API 金鑰來查詢公開索引,並使用租戶令牌讓已登入的使用者搜尋私人資料。