登录
首页 >  Golang >  Go问答

设置角色权限用于MongoDB

来源:stackoverflow

时间:2024-02-12 19:15:23 230浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《设置角色权限用于MongoDB》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

在 go 中,我向 mongo 添加一个用户,并希望创建一个角色,该角色仅授予对特定集合的访问权限。我是 mongo 的新手,所以不确定如何执行此操作。我的尝试是使用 runcommand。以下是我尝试过的,但我得到的是:

运行时错误:无效的内存地址或零指针取消引用

在我的代码下面,我验证了数据库和 id 的值是否已正确设置。

createroleresult := client.database(db).runcommand(ctx, bson.d{{"createrole", id},
        {"privileges", []bson.m{
            {
                "resource": bson.a{bson.m{"db": db}, bson.m{"collection": id}, bson.m{"actions": bson.a{"update", "insert", "remove"}}},
            },
    }}})

此代码的结果相同:

createroleresult := client.database(db).runcommand(ctx, bson.d{{"createrole", id},
        {"privileges", []bson.a{
            {
                bson.d{bson.e{"resource", bson.a{bson.d{bson.e{"db", db}}, bson.d{bson.e{"collection", id}}, bson.e{"actions", bson.a{"update", "insert", "remove"}}}}},
            },
        }}})

如有任何建议,我们将不胜感激!如果有更好的方法,我会洗耳恭听。

工作外壳代码:

db.createRole(
   {
     role: "ABC",
     privileges: [
       { resource: { db: "MyDB", collection: "ABC" }, actions: [ "update", "insert", "remove", "find" ] }
     ],
     roles: []
   }
)

谢谢!


正确答案


你可以尝试这个golang代码:

var commandResult bson.M
command := bson.D{{ "createRole", "ABC" }, { "privileges", bson.A{ bson.D{{ "resource", bson.D{{ "db", "MyDB" }, { "collection", "ABC" }}}, { "actions", bson.A{ "update", "insert" }}}}}, { "roles", bson.A{}}}
err = client.Database("test").RunCommand(context.TODO(), command).Decode(&commandResult)

if err != nil {
    log.Fatal(err)
}

fmt.Println(commandResult)

到这里,我们也就讲完了《设置角色权限用于MongoDB》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>