使用官方 SDK 的租戶令牌
使用官方 SDK 的租戶令牌有兩個步驟:產生租戶令牌,以及使用該令牌發出搜尋請求。
需求
- 一個可運作的 Meilisearch 專案
- 一個支援已驗證使用者的應用程式
- 已安裝其中一個 Meilisearch 官方 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 金鑰來查詢公開索引,並使用租戶令牌讓已登入的使用者搜尋私人資料。