PouchDB + CouchDB for offline company application with rights management (IBM Domino replace)

PouchDB + CouchDB for offline companies application with rights management (IBM Domino replace)

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

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

Domino 在数据库 ACL 中有许多级别的权限(经理、设计师、作者、作者、Reader、...)。 对于每个文档,我们可以添加一个 reader 和一个 author 字段来限制谁可以写入和读取文档。

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

为了在 Domino 中做到这一点,我们计算(每晚)每个客户文档中的 reader 和作者字段。我怎样才能在 CouchDB 中实现这样的目标?可能吗?

我了解了很多可能性:

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

A​​pache CouchDB 没有每个文档的权限。虽然您可以使用过滤复制来仅复制数据的一个子集,但您不应依赖过滤复制作为一种访问管理形式。目前,您唯一真正可行的选择是采用每个用户一个数据库的方法。您在这里有几个选择:

  • 使用 Apache CouchDB 2.0 中的 couch_peruser configuration option,它将为在 _users 数据库中创建的每个用户创建一个数据库,并授予该用户读取和写入其自己的数据库的权限。
  • 滚动你自己的方案,基本上和上面一样。
  • 使用 Cloudant Envoy which allows you to provide the illusion of one-database-per user to replication targets such as PouchDB while actually storing all of this data in one database. Check out Authentication for Cloudant Envoy Apps, Part I and Part II 了解有关如何使用 Cloudant Envoy 的更多详细信息。
  • 使用Hoodie。 Hoodie 是 Offline First 应用程序的完整后端,在服务器上利用 Apache CouchDB,在客户端上利用 PouchDB。 Hoodie 提供用于管理用户、保存数据、同步数据和许多其他功能的 API。