本指南向您展示了如何使用第三方库 node-jsonwebtoken 创建租户令牌的主要步骤。

要求

  • 一个可用的 Meilisearch 项目
  • 一个支持身份验证用户的 JavaScript 应用程序
  • jsonwebtoken v9.0

使用 jsonwebtoken 生成租户令牌

构建租户令牌负载

首先,创建一组搜索规则
{
  "INDEX_NAME": {
    "filter": "ATTRIBUTE = VALUE"
  }
}
接下来,找到您的默认搜索 API 密钥。查询获取 API 密钥端点并检查 uid 字段以获取您的 API 密钥的 UID
curl \
  -X GET 'MEILISEARCH_URL/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 您的租户令牌现在可以使用了。
尽管本示例使用了 Node.js 包 jsonwebtoken,但您可以使用任何您熟悉的 JWT 兼容库。

使用租户令牌发出搜索请求

签名令牌后,您可以像使用 API 密钥一样使用它进行搜索查询。
curl \
  -X POST 'MEILISEARCH_URL/indexes/patient_medical_records/search' \
  -H 'Authorization: Bearer TENANT_TOKEN'
© . This site is unofficial and not affiliated with Meilisearch.