如何在匿名时获取受限页面URL

How to obtain restricted page URL when anon

标题说明了一切:在我们当前正在构建的站点中,我们的页面具有管理员、来宾和匿名权限。

我们创建的一个小部件允许管理员访问 select 任何 页面,然后它会在页面中生成一个 link。使用 apostrophe-second-chance-login,这应该可以正常工作。

[...]
{
  label: 'Page, article, product, etc.',
  help: 'Content to which the button leads',
  name: '_target',
  type: 'joinByOne',
  withType: LinkableTypes,
  filters: {
    projection: {
      _url: 1
    }
  },
  idField: 'id'
}
[...]

LinkableTypes 只是 link 可以指向的小部件名称数组:

[
  "apostrophe-page",
  "article",
  "machine",
  "engine",
  "accessory"
]

apostrophe-page很明显,其他的都是碎片

我们 运行 遇到一个问题,即处于匿名模式的小部件将不会获得 data.widget._target._url 的任何值。

我们开始研究覆盖 construct

中的 load 方法
construct(self, options) {
  const superLoad = self.load;
    self.load = (req, widgets, callback) => {
    superLoad(self.apos.tasks.getReq(), widgets, callback)
  };
}

但它似乎并不适用于所有情况。在非默认语言中,data.widget._target._url 为空,而在默认语言中是正确的。我们使用 apostrophe-workflow.

我试图避免创建将 URL 硬编码在其中的组件。

如果您将 permission: false 添加到加入的 filters 部分,页面将在不考虑权限的情况下返回。您应该明智地使用它,但它允许您创建指向已登录用户无法立即看到您正在寻找的页面的链接。