2015-05-18 36 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