面试题答案
一键面试在CouchDB设计文档层面实现基本安全访问控制可按以下步骤:
- 角色定义:在CouchDB的
_users
系统数据库中定义不同角色。例如,可以创建admin
、editor
、viewer
等角色。 - 设计文档权限设置:在设计文档中,通过
_security
对象来设置不同角色的权限。{ "_id": "_design/your_design_doc", "_security": { "admins": { "names": [], "roles": ["admin"] }, "readers": { "names": [], "roles": ["viewer", "editor", "admin"] } }, "views": { "your_view": { "map": "function(doc) { emit(doc._id, doc); }" } } }
admins
字段:names
数组可填入具体用户名,这些用户将拥有管理员权限。roles
数组指定角色,如上述示例中admin
角色的用户拥有管理员权限,可对设计文档进行读写、删除等所有操作。
readers
字段:names
数组填入具体用户名,这些用户可读取设计文档。roles
数组指定角色,示例中viewer
、editor
和admin
角色的用户都有读取权限。editor
角色除读取外,可按需求配置写入权限(若未配置写入权限,editor
角色默认只有读取权限)。
- 数据库权限设置:在数据库层面也可进一步配置权限,以控制对整个数据库及其中设计文档的访问。同样通过
_security
对象:
这样设置后,不同角色的用户就可以根据配置对数据库及设计文档进行相应的安全访问控制操作。{ "_id": "_security", "admins": { "names": [], "roles": ["admin"] }, "readers": { "names": [], "roles": ["viewer", "editor", "admin"] } }