通过 rails 向 mongo 用户授予角色

Posted

技术标签:

【中文标题】通过 rails 向 mongo 用户授予角色【英文标题】:Grant roles to mongo users via rails 【发布时间】:2020-11-30 01:53:23 【问题描述】:

我正在尝试通过 rails 控制器为 mongo 用户分配角色。 我知道我们可以像here 中提到的那样为用户分配角色,但是我们需要更新整个用户。那么有没有办法直接通过rails控制器运行类似grantRole的查询呢?

【问题讨论】:

您可以将调用放入 rails 控制器。 这里我需要运行类似于 db.grantRolesToUsers() 的查询。你能用示例代码 sn-p 解释一下吗?。 【参考方案1】:

db.grantRolesToUser 是一个shell helper。您可以通过在 shell 中键入它的名称而不是调用它来了解它是如何实现的:

MongoDB Enterprise ruby-driver-rs:PRIMARY> db.grantRolesToUser
function(username, roles, writeConcern) 
    var cmdObj = 
        grantRolesToUser: username,
        roles: roles,
        writeConcern: writeConcern ? writeConcern : _defaultWriteConcern
    ;
    var res = this.runCommand(cmdObj);
    if (!res.ok) 
        throw _getErrorWithCode(res, res.errmsg);
    

你可以看到它使用了runCommand

运行任意命令的Ruby机制是documented here。

然后你会做这样的事情:

 client.database.command(grantRolesToUser: username, roles: ['foo'])

要获取客户端实例,请使用Foo.collection.client,其中Foo 是Mongoid 模型类。

【讨论】:

以上是关于通过 rails 向 mongo 用户授予角色的主要内容,如果未能解决你的问题,请参考以下文章

如何在Dynamics 365中向用户授予对实体的特定记录的读写访问请求?

Discord Bot 选择角色不会将角色授予用户

Google Cloud将用户添加到项目中

向角色授予 MANAGE GRANTS

授予者没有 GRANT 权限 - 问题

Cloud Endpoints,向 API 密钥授予角色以限制某些方法/路径(例如:读/写角色)