MST

星途 面试题库

面试题:CouchDB中如何基于HTTP API为创建文档设置基础权限管理

在CouchDB的HTTP API环境下,阐述如何为普通用户设置可以创建文档的权限,说明涉及的主要配置项和操作步骤。
29.6万 热度难度
数据库CouchDB

知识考点

AI 面试

面试题答案

一键面试
  1. 主要配置项
    • couchdb.httpd_auth:这是CouchDB中负责HTTP认证相关配置的部分。
    • couchdb.rewrites:可用于重写请求路径,在权限控制相关的自定义操作中可能会用到。
  2. 操作步骤
    • 创建角色
      • 通过_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,请求体如下:
{
  "admins": {
    "names": [],
    "roles": []
  },
  "members": {
    "names": [],
    "roles": ["document_creator"]
  }
}

这样,具有document_creator角色的普通用户就有在your - database - name数据库创建文档的权限。