如何在CouchDb隐藏文件?

72qzrwbm  于 12个月前  发布在  CouchDB
关注(0)|答案(1)|浏览(188)

CouchDB或Cloudant是否有可能为用户隐藏文档?
1.我有2个成员角色roleAroleB分配给用户。
1.我有一个数据库,其中包含由这些用户创建的3个文档:docAdocBdocC
默认情况下,所有这些文档都可以通过_all_docs视图进行查看
我需要一个可维护和可扩展的解决方案来隐藏文档。
举例来说:
a)文档docAdocC应该只能由roleA用户查看
B)文档docBdocC应仅可供roleB用户查看
C.管理员可以看到一切
我已经查阅了一份官方文档、最佳实践和其他类似主题,但我找不到任何可扩展的解决方案来完成这项任务

unhi4e5o

unhi4e5o1#

首先,在CouchDB中,_all_docs视图是一个内置视图,允许您检索数据库中所有文档的列表。默认情况下,任何对数据库具有读访问权限的经过身份验证的用户都可以查询_all_docs视图。
此外,CouchDB本身并不提供隐藏文档的功能,您可以在_design文档中使用validate_doc_update功能,根据用户角色和权限实施安全措施,以控制访问仅用于编辑文档
举例来说:

"validate_doc_update": "function (newDoc, oldDoc, userCtx, secObj) {
  if (userCtx.roles.indexOf('roleA') === -1) throw({
    forbidden: 'Only users with roleA can edit documents!'
  });
  return;
}"

字符串
另一个糟糕的情况是,如果我们有更复杂的逻辑,如何调试这些函数。

相关问题