api - 验证 CouchDB 中的 API key

标签 api couchdb api-key

我最近对 ​​CouchDB 产生了兴趣,并想尝试围绕它构建一个小型应用程序。

我目前邀请系统的方式是,请求提供两个东西:一个 id、一个 API key 和一个格式。 ID 是数据库中文档的 _id,API key 是具有属性 {"valid": true/false} 的另一个文档的 _id,格式是他们想要返回的格式。如果 API key 有效,系统将以请求的格式为给定的 ID 生成显示页面。否则,它将返回 403 统计代码。

不幸的是,我找不到从显示页面提取另一个文档的方法。我刚刚开始使用 CouchDB,所以也许我缺少一些简单的东西。

最佳答案

对于 _show 函数,涉及三个部分:

  1. 设计文档
  2. 设计文档中的显示功能
  3. 要显示的附加文件

对于 URL 格式 /db/_design/ddoc/_show/my_show_func/otherdoc:

  1. 设计文档为_design/ddoc
  2. 显示函数是该设计文档中的 shows.my_show_func
  3. 要显示的文档的 _idotherdoc

这是仅有涉及的两个文档。我认为执行您所描述的操作的唯一方法是为每个 API key 提供一个设计文档。用户将查询/db/_design/API_KEY/_show/other_doc_id。 CouchDB 很轻松。数千个具有相同或相似 _show 功能的设计文档并没有什么问题。您可以根据需要使用 HTTP COPY 方法将基本设计文档克隆到新的 API key 。然后,您可以通过删除设计文档来撤销 API key 。然而,这显然是一种独特的方法,值得三思。

最后一个考虑因素是(使用默认的 CouchDB、无反向代理、mod_security 等)如果用户可以读取一个文档,他们就可以读取整个数据库(例如从 _all_docs 查询)。 )因此显示功能只是软件的一种便利,而不是安全网关。

关于api - 验证 CouchDB 中的 API key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3612285/

相关文章:

ubuntu - Ubuntu 14.04 中的 Couchdb 'init terminating in do_boot' 错误

r - 有没有办法混淆 R 包中的 API key ?

java - 为我的 API 实现 API key

android - android studio 如何在拇指后面显示Switch

Java:谷歌地图的替代品

java - reduce() 不适用于 lightcouch

android - 同一 Android 项目中的多个 API key

用于更改音轨的 Windows API

api - 尝试连接到 HTTPS 时出错

javascript - 我如何编写一个 CouchDB View 来列出每个存储文档的大小?