在没有 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
。
你的租户令牌现在可以使用了。
使用其他库
虽然此示例使用的是 Node.js 包 jsonwebtoken
,但你可以在任何你擅长的语言中使用任何与 JWT 兼容的库。
使用租户令牌进行搜索请求
在签署令牌后,你可以使用它以与使用 API 密钥相同的方式进行搜索查询。
curl \
-X POST 'https://127.0.0.1:7700/indexes/patient_medical_records/search' \
-H 'Authorization: Bearer TENANT_TOKEN'