租户令牌负载参考
Meilisearch 的租户令牌是 JSON Web 令牌 (JWT)。它们的负载由三个元素组成:搜索规则、一个 API 密钥 UID 和一个可选的过期日期。
Meilisearch 的租户令牌是 JSON Web 令牌 (JWT)。它们的负载由三个元素组成:搜索规则、一个 API 密钥 UID 和一个可选的 过期日期。
负载示例
搜索规则
搜索规则对象是一组指令,定义了 Meilisearch 将在每次使用特定租户令牌进行的查询中强制执行的搜索参数。
搜索规则对象
searchRules
必须是 JSON 对象。每个键必须对应一个或多个索引
每个搜索规则对象可能包含一个 `filter` 键。此 `filter` 的值必须是 筛选表达式
Meilisearch 会将此筛选器应用于使用该租户令牌进行的所有搜索。令牌只能访问 `searchRules` 对象中存在的索引。
令牌可以包含任意数量索引的规则。特定规则集优先并覆盖 `*` 规则。
由于租户令牌是在您的应用程序中生成的,Meilisearch 无法检查搜索规则筛选器是否有效。无效的搜索规则在搜索时会抛出错误。
有关 Meilisearch 筛选语法的更多信息,请查阅搜索 API 参考。
搜索规则也可以是一个空对象。在这种情况下,租户令牌将拥有访问索引中所有文档的权限
示例
单个筛选器
在此示例中,用户将只收到 `user_id` 等于 `1` 的 `medical_records` 文档
多个筛选器
在此示例中,用户将只收到 `user_id` 等于 `1` 且 `published` 字段为 `true` 的 `medical_records` 文档
授予访问索引中所有文档的权限
在此示例中,用户可以访问 `medical_records` 中的所有文档
使用部分通配符定位多个索引
在此示例中,用户将收到以 `medical` 开头的任何索引中的文档。这包括 `medical_records` 和 `medical_patents` 等索引
使用通配符定位所有索引
在此示例中,用户将收到整个实例中任何索引中的文档
手动定位多个索引
在此示例中,用户可以访问所有索引中 `user_id = 1` 的文档,除一个例外。查询 `medical_records` 时,用户将只能访问已发布的文档
API 密钥 UID
租户令牌负载必须包含 API 密钥 UID 以验证请求。UID 是一个标识 API 密钥的字母数字字符串
查询 获取单个 API 密钥端点 以获取 API 密钥的 UID。
UID 必须指示一个有权访问 搜索操作 的 API 密钥。令牌拥有与用于生成它的 API 密钥相同的索引和路由访问权限。
由于主密钥不是 API 密钥,您不能使用主密钥来创建租户令牌。避免暴露 API 密钥并始终在应用程序的后端生成令牌。
如果 API 密钥过期,使用它创建的任何租户令牌都将失效。如果 API 密钥因主密钥更改而被删除或重新生成,也适用同样的情况。
过期日期
过期日期必须是 UNIX 时间戳或 `null`
令牌的过期日期不能超过其父级 API 密钥的过期日期。
设置令牌过期日期是可选的,但强烈建议这样做。没有过期日期的令牌将无限期有效,可能成为安全隐患。
撤销没有过期日期的令牌的唯一方法是 删除 其父级 API 密钥。
更改实例的主密钥将强制 Meilisearch 重新生成所有 API 密钥,并且还会使所有现有租户令牌失效。