在沒有 Meilisearch SDK 的情況下產生租戶令牌
本指南說明使用 node-jsonwebtoken
(第三方函式庫)建立租戶令牌的主要步驟。
需求
- 一個運作中的 Meilisearch 專案
- 一個支援已驗證使用者的 JavaScript 應用程式
jsonwebtoken
v9.0
使用 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
。接下來,組裝令牌酬載並將其傳遞給 jsonwebtoken
的 sign
方法
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 支援以下加密演算法:HS256
、HS384
和 HS512
。
您的租戶令牌現在可以使用了。
使用其他函式庫
雖然此範例使用 jsonwebtoken
(一個 Node.js 套件),但您可以使用任何您覺得舒適的語言中的任何相容 JWT 的函式庫。
使用租戶令牌發出搜尋請求
在簽署令牌後,您可以使用它發出搜尋查詢,就像您使用 API 金鑰一樣。
curl \
-X POST 'https://127.0.0.1:7700/indexes/patient_medical_records/search' \
-H 'Authorization: Bearer TENANT_TOKEN'