首页 > 解决方案 > 无需身份验证即可显示数据

问题描述

在 couchDb > 数据库 > 权限中,在角色中添加 _admin 并且在 URL 中添加用户名和密码时一切正常,但出于下载附件的目的,我不会在显示卷曲中添加用户名和密码。

所以我只想在显示数据中删除身份验证。我怎样才能做到这一点 ?

例子:

1) http://username:password@127.0.0.1:5984/database/001 用于添加、删除、更新

2) http://127.0.0.1:5984/database/001/test.php 仅用于显示或下载附件。

标签: authenticationcouchdb

解决方案


为了提供一个每个人都可以读只有少数可以写的模式1,您需要在设计文档中使用 validate_update_doc 2函数。任何创建、更新或删除文档的请求都会调用该函数。

例如需要管理员角色来修改但允许任何人读取数据库:

function(newDoc, oldDoc, userCtx) {
  if (userCtx.roles.indexOf("_admin") === -1) {
    throw( { forbidden : "Only admins can modify the database." } );
  }
}

设计文档可能如下所示

{
  "_id": "_design/validate_write",
  "validate_doc_update": "function (newDoc, oldDoc, userCtx) { if (userCtx.roles.indexOf('_admin') === -1) throw( { forbidden : 'Only admins can modify the database.'} ); }" 
}

在 Fauxton 中创建此文档很容易。正如两篇参考文献所概述的,这可以扩展到用户角色等。

请注意,对于您的方案,您必须将 CouchDB 配置属性require_valid_user3设置为 false。


1 CouchDB 身份验证秘诀:每个人都可以只读一些可以写
2 CouchDB validate_doc_update函数
3 CouchDB require_valid_user 配置属性


推荐阅读