我希望人们能够私下共享文档,使用带有随机ID的链接,就像我在发送到pastebin的私人链接后得到的那样.我想知道CouchDB和Cloudant的一般情况.
Jas*_*ith 15
使用Apache CouchDB,读取权限是每个数据库,而不是每个文档.如果用户可以从数据库中获取文档,则用户也可以获取_all_docs?include_docs=true
.
我在这个关于CouchDB读取授权的问题中写了详细信息.
有几种方法:
第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授予许可,用户很满意.不幸的是,这需要一些试验和错误; 然而,这主要是简单的网络编程.