【问题标题】:Meilisearch: user protected searchMeilisearch:用户保护搜索
【发布时间】:2021-10-22 06:03:19
【问题描述】:

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

现在在另一个页面上(同样在同一个登录之后),用户可以将他们自己创建的所有电影作为一个列表查看。他们还可以使用可以开始输入的文本字段过滤它们,并且列表将被更新。

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

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

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

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

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

【问题讨论】:

    标签: php full-text-search meilisearch


    【解决方案1】:

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-26
    • 2014-09-01
    • 2021-08-25
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    相关资源
    最近更新 更多