面试题答案
一键面试- 主要配置项:
couchdb.httpd_auth
:这是CouchDB中负责HTTP认证相关配置的部分。couchdb.rewrites
:可用于重写请求路径,在权限控制相关的自定义操作中可能会用到。
- 操作步骤:
- 创建角色:
- 通过
_config
API来创建角色。例如,可以发送一个HTTP PUT请求到http://your - couchdb - server:5984/_config/query_servers/<role - name>
,这里<role - name>
是自定义的角色名,如document_creator
。这个操作是告诉CouchDB存在这样一个角色。
- 通过
- 配置角色权限:
- 编辑
local.ini
文件(通常在CouchDB的安装目录下的etc
文件夹中)。在[httpd]
部分添加或修改以下内容:
- 编辑
- 创建角色:
[httpd]
; 启用角色认证
authentication_handlers = {couch_httpd_auth, cookie_authentication_handler}, {couch_httpd_auth, basic_authentication_handler}
; 定义角色
default_roles = document_creator
- 在`[query_servers]`部分确保有相应角色的配置,例如:
[query_servers]
document_creator = /path/to/script.sh
- 为用户分配角色:
- 可以通过
_users
数据库来为用户分配角色。首先获取用户文档,发送一个HTTP GET请求到http://your - couchdb - server:5984/_users/org.couchdb.user:username
,这里username
是目标普通用户的用户名。 - 然后,更新用户文档,添加角色信息。发送一个HTTP PUT请求到
http://your - couchdb - server:5984/_users/org.couchdb.user:username
,请求体类似如下JSON:
- 可以通过
{
"_id": "org.couchdb.user:username",
"_rev": "your - current - rev - number",
"name": "username",
"password": "your - password",
"roles": ["document_creator"],
"type": "user"
}
- 配置数据库权限:
- 发送一个HTTP PUT请求到
http://your - couchdb - server:5984/your - database - name/_security
,请求体如下:
- 发送一个HTTP PUT请求到
{
"admins": {
"names": [],
"roles": []
},
"members": {
"names": [],
"roles": ["document_creator"]
}
}
这样,具有document_creator
角色的普通用户就有在your - database - name
数据库创建文档的权限。