有没有办法让发布的过滤器成为 'safeFilter'

Is there a way to make published filter a 'safeFilter'

我正在部署 Apostrophe-Headless 和 Next.js。一切都像梦一样进行,但我目前正在尝试设置一个暂存环境,并希望在该舞台上显示未发布的项目。我看过 published=any 的文档,当我登录时它可以工作,但是当我的应用程序在服务器端调用 API 时,未发布的项目不会返回。我假设这是因为服务器未登录。我一直在深入研究,我注意到有人提到了 safeFilter 数组,但它似乎并没有影响 published。当这个变量已经存在时,我不想过滤另一个 "published-like" 变量。

要查看未发布的内容,您需要拥有该内容的编辑权限。这是撇号中 "unpublished" 的定义。

我认为这实际上是有道理的,因为如果不允许某人编辑,他们可能也不应该被允许看到 public 还不能看到的东西。

如果您使用针对相关内容类型的无头 API 密钥来获取此信息,您会看到它,但您也有编辑权限。

将过滤器标记为安全无关紧要,因为 Apostrophe 的安全模型始终适用 — 最后的 MongoDB 查询将包含用户对过滤器的请求,但也会包含对未发布内容的限制因为不允许用户看到它。这通常是一件好事。

因此,如果您使用 "unpublished" 表示其他含义,例如 "not interesting enough for the regular output but maybe interesting to some people,",那么我认为引入一种不同的方式来表示该信息实际上是个好主意。

如果您正在阅读此答案并思考 "but I'm not creating a public API here, this is just for my privileged application that should have the same privileges I do," 那么 API 密钥或不记名令牌就是您想要的:

https://www.npmjs.com/package/apostrophe-headless#building-apps-without-apostrophe-ui-bearer-tokens-and-api-keys