authentication - 无需身份验证即可显示数据
问题描述
在 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 仅用于显示或下载附件。
解决方案
为了提供一个每个人都可以读只有少数可以写的模式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_user
3设置为 false。
1 CouchDB 身份验证秘诀:每个人都可以只读一些可以写
2 CouchDB validate_doc_update函数
3 CouchDB require_valid_user 配置属性
推荐阅读
- c - 如何在C中的`execv`中组合`lshw`和`grep`命令?
- firebase - 更新现有文档中的一个字段是否被视为写入?
- javascript - 为什么我不能使用 html 和 javascript 中的搜索功能?
- angular - 带半径的 Algolia 过滤器地理位置
- python - python,直方图,数据拟合
- excel - VBA 匹配其他工作表上的行高
- c++ - 了解此代码中的“可调用”对象/事物
- swift - 线程 1:致命错误:在隐式展开可选值时意外发现 nil
- properties - 如何在 AppleScript 中复制具有两个属性的文件
- android - Android ViewModelProvider() 参数错误