如何限制仅管理员可创建CouchDB用户?(React+PouchDB场景)
解决CouchDB 2.1.1限制匿名创建用户记录的问题
我来帮你搞定这个权限问题!你遇到的情况是因为_users数据库的默认安全配置可能还允许匿名用户写入,哪怕你已经禁用了admin party。下面是具体的解决步骤:
修改
_users数据库的安全规则
这是最关键的一步,你需要通过管理员权限来调整_users库的权限,只允许管理员才能创建用户记录。你可以用API请求来设置:
发送一个PUT请求到/_users/_security,请求体是如下JSON:{ "admins": { "names": ["你的管理员用户名"], "roles": ["_admin"] }, "members": { "names": [], "roles": [] } }这样设置后,只有拥有
_admin角色的管理员账户,才能对_users数据库进行写入操作,匿名用户和普通认证用户都会被拒绝。验证设置是否生效
配置完成后,你可以用匿名身份尝试发送POST请求到/_users创建用户文档,正常应该会返回403 Forbidden的错误,这就说明权限限制已经生效了。可选:允许特定角色创建用户
如果你之后需要让某些特定角色的用户来创建新用户,也可以调整配置,比如给members的roles字段添加指定角色:{ "admins": { "names": ["admin"], "roles": ["_admin"] }, "members": { "names": [], "roles": ["user_creator"] } }这样拥有
user_creator角色的认证用户就能创建用户记录,而匿名用户还是无法操作。
简单来说,问题的根源就是_users这个系统库的权限没有和你禁用admin party后的需求同步调整,把它的写入权限锁死给管理员就解决了。
内容的提问来源于stack exchange,提问作者agmcleod
相关产品推荐
相关产品推荐

