gpt4 book ai didi

node.js - 如何自动为 CouchDB 用户分配角色?

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:23 25 4
gpt4 key购买 nike

我有以下注册用户的方法:

// Registration method
exports.register = function(req, res) {
var username = req.body.username,
password = req.body.password,
first = req.body.first;
last = req.body.last;
role = req.body.institution;

nano = require('nano')('http://127.0.0.1:5984');
var users = nano.use('_users');

var user = {
"_id": "org.couchdb.user:" + username,
"name": username,
"type": "user",
"roles": [],
"password": password,
"realname": first + " " + last
};

users.insert(user, function(err, body) {
if(err) {
res.send(err.reason, err.status_code);
} else {
res.send(body, 200);
}
});
};

如您所见,我有一个名为角色的变量,我想在“角色”数组中设置它。不幸的是,您可能知道,CouchDB 只允许管理员设置角色。我对此表示同意,但我将这些角色用作机构,因此我希望注册用户能够选择他们在哪个机构下注册,因此它应该自动为他们分配此角色。无需将我的管理凭据硬编码到此方法中,即nano.config.url = "http://admin:password@127.0.0.1:5984/"正如我所提到的,如何自动将新用户分配给他们指定的角色?

最佳答案

CouchDB 使用角色数组来决定 database authorization 。这允许您通过用户角色配置对给定数据库的访问。如果用户可以设置自己的角色,那么某人就可以授予自己访问任何机构的权限。他们甚至可以让自己成为管理员,这违背了保护您的管理员密码的目的。

我不确定您的用例是什么,但我认为您并没有试图阻止访问其他机构。相反,我怀疑您正在尝试使用这些角色来执行某些其他应用程序功能(例如,为他们过滤信息以简化他们所看到的内容)。由于您想要执行非安全功能,我强烈建议您将自己的字段添加到用户文档中。您可以为每个用户添加一个institutions 属性。

<小时/>

如果您真的想要做到这一点,有办法。您收到的错误来自 update validation function_users 数据库的 _design/_auth 中。作为管理员,您可以更改此功能。

下载文档。打开文件并搜索Only _admin may edit Roles以查看测试的执行位置。删除该条件并将文档保存回 CouchDB。

关于node.js - 如何自动为 CouchDB 用户分配角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15258471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com