我希望人们可以使用带有随机ID的链接私下共享文档,就像我在发送一个私有链接到pastebin后得到的那样。我想知道CouchDB和Cloudant的一般情况。
答案 0 :(得分:15)
使用Apache CouchDB,读取权限是按数据库,而非每个文档。如果用户可以从数据库中获取文档,则用户也可以获取_all_docs?include_docs=true
。
我在这个关于CouchDB read authorization的问题中写了详细信息。
有几种方法:
第7层防火墙或反向HTTP代理。这很难做到正确; IMO对大多数人来说不可行。您必须非常熟悉CouchDB的API,以确保阻止每个可能的查询(例如_rewrite
绕过您的过滤器。)
每个用户一个数据库。这是CouchDB的原生解决方案。创建数据库非常便宜。然后,将用户可以看到的文档复制到他或她的数据库中。用户需要Couch或OAuth帐户的密码。
我最近在每个用户数据库方面取得了成功,但还是URL中的一个唯一键,可以让他们立即访问。感觉就像你想要的东西,但是在幕后,我只是用随机密码创建一次性帐户。该链接转到公共页面,例如www.example.com/pastebin/index.html?doc_id=some_docid&secret=random_secret
。然后浏览器上的Javscript将读取window.location
并将该密码插入AJAX查询(在Authorization标头中)。 Couch授予许可,用户很满意。不幸的是,这需要一些试验和错误;然而,它主要是简单的网络编程。