我使用CouchRest上的CouchRest :: Model在Rails 3应用程序中使用CouchDB作为我的数据层。
我正在请求一个文档列表并将它们作为JSON返回到我的浏览器并使用jQuery模板来表示该数据。
有没有办法在服务器端构建请求,并返回需要从浏览器调用的请求而不会打开一个巨大的安全漏洞,即让浏览器访问整个数据库?
理想情况下,它将是对特定查询的一次性令牌访问,其中令牌将在服务器端生成,而CouchDB将获取令牌,并确保它与查询应该匹配,并提供访问权限结果。
想到的一种方法是生成令牌文档并使用show函数(http://guide.couchdb.org/draft/show.html)返回该令牌Document的视图结果的结果。虽然我不确定这是否可能。
虽然另一种方法是在Document本身上放置一个令牌并使用列表功能(http://guide.couchdb.org/draft/transforming.html)
除此之外,还有其他想法吗?
先谢谢
答案 0 :(得分:1)
我有没有办法建立 请求在服务器端,并返回 需要的请求 从浏览器调用WITHOUT 打开一个巨大的安全漏洞 让浏览器访问整个 数据库?
是。一种方法是创建一个机架应用程序并将其安装在rails应用程序中。您可以在“/ couch”接收来自用户浏览器的请求,并将该请求转发到您的“真实”couchdb网址,按原样返回沙发的JSON响应或根据需要修改它。
您可能还可以利用沙发的重写和虚拟主机功能来控制普通大众能够达到什么沙发的URL。这可能需要使用列表或显示功能。 http://blog.couchone.com/post/1602827844/of-rewrites-and-virtual-hosting-an-introduction
理想情况下,它将是对特定查询的一次性令牌访问,其中令牌将在服务器端生成,而CouchDB将获取令牌,并确保它与查询应该匹配,并提供访问权限结果。
您可以使用cookie,因为list和show函数可以设置并获取请求的cookie值。
但您也可以在每个请求中包含哈希值。 Heroku的附加API就是一个很好的例子。 https://addons.heroku.com/provider/resources/technical/build/sso 请注意,API调用在特定时间窗口之外是无效的,这可能正是您所需要的。
我不确定我是否完全理解您的需求,但我希望我能够给您一些有用的想法。