0

我正在尝试将 CouchDB 实例设置为:

  • 为随机访问的人创建/编辑/删除文档时不需要在Web 用户界面登录http://my_couchdb:5984
  • 防止随机人员进行管理员级别更改
    • 例如:修改设计文档、添加用户或删除预先存在的用户

基本上,我希望随机的人像members这里描述的那样:https ://docs.couchdb.org/en/2.3.1/api/database/security.html#api-db-security

要做到这一点需要哪些设置?他们住在etc/local.ini?

我不想使用 cookie 或个人用户数据库。


我如何设置它

我将 CouchDB 配置为拥有一个管理员用户,boss.

我还做了一个数据库bananashttp://my_couchdb:5984/_utils/#database/bananas/_all_docs


到目前为止我尝试过的

require_valid_user在内部httpdchttpd内部etc/local.ini)进行操作对我不起作用,也许我做得不太对

根据这个答案,我尝试将管理员用户添加boss到权限 --> 管理员 --> _usersdb 和bananasdb 的用户,但未能达到我想要的结果。

然后我删除了这两个,现在的响应curl $HOST/bananas/_security{}

这个答案谈论创建一个低权限用户,但没有谈论如何绕过登录。

下面的authentication_handler工作,但我不想要一个管理员方,所以我需要一个更好的方法。

[chttpd]
authentication_handlers = {couch_httpd_auth, null_authentication_handler}

**更新**

正如@uminder 所指出的,开箱即用似乎可以在没有凭据的情况下制作文档。我从第二台机器上运行了以下命令:

curl -X PUT http://my_couchdb:5984/bananas/test -d '{ "name": "test document" }'

然后可以通过以下方式查看(但不能编辑)文档:

http://my_couchdb:5984/bananas/test

直接访问网址

(请忽略主机名实际上不是my_couchdb

我需要的是使用无需登录的 Web UI来编辑该文档。目前,用户界面是 Fauxton。这是我所做的:

  1. 去这里:http://my_couchdb:5984/_utils/#database/bananas/test
  2. 它在这里重定向到登录页面:http://my_couchdb:5984/_utils/#login

重定向到登录页面

我怎样才能不被重定向到登录,而只能使用 Web UI 编辑文档?

我想要的是


设置信息

  • 沙发数据库版本:2.3.1
  • 操作系统:Ubuntu 16.04.3 LTS

请让我知道需要哪些其他信息才能找到解决方案!我是配置 CouchDB 的新手。

4

1 回答 1

2

我只是在 Windows 10 上本地安装CouchDB(单节点设置)。然后我在.admin userbananasFauxton

使用curl,我能够在不提供任何凭证的情况下create,在数据库中记录文档updatedeletebananas

curl -X PUT http://127.0.0.1:5984/bananas/1 -d '{ "name": "doc 1"  }' 
curl -X PUT http://127.0.0.1:5984/bananas/1 -d '{ "name": "doc 2", "_rev": "1-5cd56a944d3d59a44613269396365431" }'
curl -X DELETE http://127.0.0.1:5984/bananas/1?rev=3-2b34329467970cc792cee5931a68ca2e

但是,当尝试在其中创建设计文档(索引)bananas时,出现“未经授权”错误,原因是“您不是数据库或服务器管理员”。

curl -X PUT http://127.0.0.1:5984/bananas/_design/name_idx -d '{ "index": { "fields": ["name"] } }

当我CouchDB在同一子网内的另一台计算机上安装时,结果完全相同。在这些情况下,新安装的默认设置似乎CouchDB只是按照您希望的方式运行,至少在参考您的答案的磁贴时是这样。

如果我必须CouchDB通过公共 URL 访问,我会尝试更改默认安全对象并CORSlocal.ini文件中启用。

[couchdb]
default_security = everyone 

[httpd]
enable_cors = true

[cors]
origins = *
methods = GET,POST,PUT,DELETE
credentials = false

绕过 Web 界面登录

我不认为可以将 Fauxton 配置为绕过登录页面以允许匿名用户直接创建、更新或删除文档。您必须创建couchdb-fauxton项目的分支并更改代码以满足您的需求。

或者,您可以编写自己的 Web 界面(Angular、React、Vue.js ...),在内部使用现有用户进行身份验证,但将其隐藏给最终用户。

于 2019-11-18T08:29:28.130 回答