2017-04-19 29 views
1

在我的公司中,我们使用IBM Domino十多年。我们使用它来构建具有复制支持的离线应用程序。它运行良好,但我们需要使用IBM Notes客户端来允许此功能,并且它不适用于移动设备(当然,除了Windows笔记本电脑外)。PouchDB + CouchDB适用于具有权限管理的离线公司应用程序(IBM Domino替换)

我正在寻找其他解决方案来构建离线优先和多支持(Web)应用程序。我认为CouchDB + PouchDB是最好的解决方案。但要替换Domino,我必须更换授权功能。

Domino在数据库ACL(管理器,设计器,作者,书写器,阅读器等)中拥有许多权限级别。 对于每个文档,我们可以添加一个阅读器和一个作者字段,它限制谁可以写和读文档。

例如,我们将Domino与我们的CRM一起使用,员工可以读取(并写入)他的客户以及在公司层次结构中低于他的员工的客户。他还可以查看其地理区域的客户(不写)。

要在Domino中做到这一点,我们计算(每晚)在每个客户文档中的读者和作者字段。我如何在CouchDB中实现这样的功能?可能吗?

我读到许多可能性:

解决上述问题的最佳解决方案是什么?

+0

你说得对,我在上面指出我的问题。 – Dorian

+0

大大改进。谢谢! – Flimzy

回答

3

Apache CouchDB不具有每个文档的权限。尽管您可以使用已过滤的复制来仅复制一部分数据,但您不应该依靠过滤的复制作为访问管理的一种形式。目前,您唯一真正可行的选择是采用单用户数据库方式。你这里有几个选项:

  • 使用couch_peruser configuration option中的Apache CouchDB的2.0,这将创建在_users数据库中创建每个用户数据库,并给予读取和写入自己的数据库用户权限。
  • 滚动你自己的计划,基本上做同样的事情。
  • 使用Cloudant Envoy它允许您将每个用户一个数据库的错觉提供给复制目标(如PouchDB),同时将所有这些数据实际存储在一个数据库中。查看Cloudant Envoy应用程序的身份验证,Part IPart II,了解有关如何使用Cloudant Envoy的更多详细信息。
  • 使用Hoodie。 Hoodie是Offline First应用程序的完整后端,它利用服务器上的Apache CouchDB和客户端上的PouchDB。连帽衫提供用于管理用户,持久数据,同步数据和其他一些功能的API。
相关问题