如何仅为特定用户和角色显示和复制文档?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何仅为特定用户和角色显示和复制文档?相关的知识,希望对你有一定的参考价值。

我正在使用couchdb和pouchdb构建一个协作应用程序。

我想实现日历功能。

假设有一个类似“秘密会议”的事件涉及用户Jessica和James,因此该事件应该只对Jessica和James有读取,更新和复制功能。或者,比方说,我有一个像“一般会议”这样的事件,它应该只对所有具有“办公室”角色的当前(和FUTURE!)用户具有读取,编辑和复制功能。

我知道couchdb中没有每个文档访问控制。我还读到了使用“代理服务器”但我不明白它们是如何工作的。

我读了很多关于使用“每个用户一个文档”的内容。如何在每个数据库中保持文档同步?我可以为每个事件创建一个DATABASE,但是如何查询显示我所有事件的视图?我是否还必须保留每个角色的数据库?

这是当今每个Web应用程序最常用的用例!想想Facebook,想想Whatsapp,每个聊天应用程序。

如果您不能限制对某些文档的访问,您应该如何使用CouchDB?

答案

是的,您应该为每个用户建立一个数据库,您将使用filtered replication将与该用户相关的所有事件文档或用户所属的角色放入每个数据库,然后您将整个数据库复制到用户的PouchDB。

另一答案

我最终为我的数据库开发了一个PROXY服务器,它位于我的主数据库前面并过滤数据。它有自己的端口,并在端口5984上查询Couchdb以获取权限。我使用了nodejs和Nano couchDB适配器。

以上是关于如何仅为特定用户和角色显示和复制文档?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AngularJS 中处理基于角色的授权?

如何根据用户角色(尤其是可变产品)显示不同的产品价格? [复制]

全文搜索和角色权限

在 Mongoose 中,我有具有一对多关系的用户和角色模式。如何查询特定用户是不是具有“管理员”角色?

用户角色的 Couchdb/Couchdb 复制策略

Laravel - 我有一个具有不同角色的用户模型。如何在具有特定角色的用户之间建立关系? [关闭]