2015-05-18 35 views
0

我正在使用Couchbase的同步网关并希望限制对文档的访问。此外,每个文件的个别限制应考虑到目前正在发生的事情:文件正在被阅读,或正在被创建或以某种方式被改变。为此,我可以使用oldDoc and deletedCouchbase同步功能:如何检测当前的访问类型?

  • 创建:oldDoc将不确定
  • 读:???
  • 更新:oldDoc是一个对象,而不属性deleted : true
  • 删除:oldDoc是与属性deleted : true

基本上, “CUD” 已记录的对象。到目前为止,我还没有发现的是,我如何限制对文档的访问权限。

E.g.可能有一个管理员用户被允许创建,更新和删除特定类型的文档(当然也可以看到它)。另一方面,普通用户只能看到这个文档,但既不能创建也不能更新/删除它。

回答

0

我认为这是使用sync函数中可用的角色api的一个很好的用例。

例如,admin用户将具有admin角色。您可以使用role函数将角色分配给用户。

然后,普通用户和管理员用户都可以访问包含文档的频道。

并使用requireRole函数来检查用户是否具有admin角色以允许CUD操作。

+0

啊,明白了!我只用'requireRole('admin')'扩展了同步功能。通过这样做,可见性(GET)不受影响,但文档(特别是ADD)的更改只能由管理员进行。所以最基本的想法似乎是渠道(用于GET)和requireUser/Role(用于PUT,POST和DELETE)之间的区别。这有点奇怪,但我很高兴它现在起作用。 – Bastian