【问题标题】:Enforcing Access Control on CouchDB在 CouchDB 上实施访问控制
【发布时间】:2013-01-31 19:44:34
【问题描述】:

我一直在研究 CouchDB 和 TouchDB 一段时间,并认真考虑它们是否适合我心目中的移动应用程序。我有几个问题,如果有人能指出我正确的方向,我将不胜感激。场景是我有 2 个在 TouchDB 上运行的移动客户端。我希望移动客户端 A 能够将特定文档复制到移动客户端 B。然后我希望移动客户端 B 能够进行更改并将这些更改同步回移动客户端 A。从架构的角度来看,我认为我需要一个集中的 couchdb 数据库,两个客户端都可以拉/推。我遇到的问题是如何确保客户 B 只能复制他被授权复制的文档。我知道我可以使用复制过滤器来限制复制的文档,但是如何在移动客户端 B 上强制执行它?此外,上述场景的理想架构是什么?任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: android mobile couchdb replication touchdb


    【解决方案1】:

    我在 EC2(集中式数据库)中使用 TouchDB 和 BigCouch 进​​行了类似的设置。让推动和拉动正常工作可能是一次冒险。 =)

    我认为您在使用带有拉取功能的复制过滤器方面走在了正确的轨道上。如果您使用复制过滤器限制客户端 B 的拉取,您的生活很可能会更轻松,因为客户端 B 可以修改其本地 TouchDB 上的任何内容,并且不会造成任何伤害。

    换句话说,不要复制您不希望客户 B 修改的文档。

    为此,您必须在文档中引入一个指定访问级别的字段 - 或者某个数组可能包含客户端 B 的用户 ID。这样他只能看到他有权看到的东西。

    在我忘记之前有两个注意事项:a) Android 上的 TouchDB 目前还很粗略。他们正在努力让它变得更好,但它落后于 iOS 版本。 b) 我强烈建议考虑用 Erlang 编写你的复制过滤器。通过这样做,我的速度提高了 50%。

    【讨论】:

    • 您建议将复制过滤器存储在集中式服务器上以推送到客户端 B 还是将过滤器发送到客户端 B 然后进行拉取?
    • 我已将复制过滤器放在集中式服务器上。 wiki.apache.org/couchdb/EnableErlangViews这就是Erlang过滤器的启用方法,如果你想试试的话。
    • 好的,我会检查一下。在尝试使拉和推正常工作时遇到任何问题吗?
    • 这并不总是那么容易......我正在努力思考一些事情。在 iOS 端,拥有 HTTP 代理(Charles、Fiddler)非常有帮助。我不记得在我的 Android POC 上使用过一个。绝对不要在 TouchDB 论坛 (groups.google.com/forum/#!forum/mobile-couchbase) 上害羞。主要贡献者通常会在 20 分钟内回答问题。 Erlang 过滤器很难编写,但为了提高效率非常值得。花时间阅读 Ektorp 文档。希望有帮助!如果您有任何问题,请告诉我 - 我最近在这方面花费了很多时间。
    猜你喜欢
    • 2019-11-15
    • 1970-01-01
    • 2020-07-10
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2021-12-05
    • 1970-01-01
    相关资源
    最近更新 更多