美丽搜索:用户保护搜索

Meilisearch: user protected search

我有一个数据库 table“电影”,其中包含三个字段:idtitleuser_id。登录后,用户可以使用自定义 title 创建新电影。 user_id 自动设置为当前登录用户。

现在在另一个页面(也在同一个登录后面)用户可以看到他们自己创建的所有电影列表。他们还可以使用文本字段对其进行过滤,他们可以在其中开始输入,然后列表将得到更新。

为了尽快搜索,我用 meilisearch 索引了所有电影。但目前每个用户也可以看到其他用户的电影。是否可以确保每个用户只能看到他创建的电影?

我尝试使用来自 meilisearch 的 php 包和自定义路由来解决它,我可以在其中检查用户访问权限,然后 return 结果:

$results = $searchService->rawSearch(Channel::class, '', [
    'facetFilters' => ['user_id:XXX'],
]);

// Return results to frontend as json
return $results;

但我想直接在前端使用 meilisearch 而不是通过后端使用,因为性能损失。那么是否可以在前端进行相同的搜索,而无需其他用户通过轻松更改搜索查询中的用户 ID 来搜索其他人的电影?是否可以保护搜索结果或我应该使用其他搜索引擎?如果是的话,你能推荐另一个开源搜索引擎吗?

目前,美丽搜索不提供多租户密钥管理。这是一项未来的改进,将允许自动将搜索限制为来自正在进行搜索的用户的授权密钥的可访问文档。

同时,可以有一个可以访问此文档的用户 ID 数组。通过在前端构建过滤器来推断正确的用户 ID 是可行的。这样做的限制是有人可以自己删除此过滤器并查看其他文档。应该可以通过 facade/proxy(例如 Kong)来避免此缺陷,该缺陷检查是否存在 user_id 作为过滤器或覆盖它,但正如您所说,这并不理想。

我们希望在 2021 年底之前添加此功能!