有没有办法让已发布的过滤器成为一个“安全过滤器”。

时间:2018-05-08 15:13:01

标签: api headless apostrophe apostrophe-cms next.js

我正在使用Apostrophe-Headless和Next.js的部署。一切都像梦一样,但我目前正在尝试建立一个临时环境,并希望在该阶段显示未发布的项目。我已经看到了published=any的文档,它在我登录时有效,但是当我的应用程序在服务器端调用API时,未发布的项目不会被返回。我假设它是因为服务器没有登录。我已经挖了好几天了,我注意到有人提到safeFilter数组,但它似乎不会影响published。我不想过滤另一个"已发布的"当这个已存在时变量。

1 个答案:

答案 0 :(得分:0)

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

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

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

标记过滤器安全并不重要,因为Apostrophe的安全模型始终适用 - 最终的MongoDB查询将包括用户对过滤器的请求,但它还将包括对未发布内容的限制,因为用户不是允许看到它。这通常是件好事。

因此,如果您使用“未发布”来表示其他内容,例如“对于常规输出不够有趣,但对某些人来说可能很有趣”,那么我认为引入一种不同的表示方式的方法实际上是一个好主意。信息。

如果您正在阅读此答案并且想“但我不是在这里创建公共API,那么这仅适用于我应该具有相同权限的特权应用程序”,然后API密钥或不记名令牌是你想要什么:

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