在 mongo 数据库中定义用户角色的好方法是啥

Posted

技术标签:

【中文标题】在 mongo 数据库中定义用户角色的好方法是啥【英文标题】:What is a good way to define user roles in a mongo database在 mongo 数据库中定义用户角色的好方法是什么 【发布时间】:2015-01-22 09:51:07 【问题描述】:

来自关系数据库背景,我发现将用户及其角色分解为规范化表很容易。但是在 mongo 数据库中执行此操作的习惯方法是什么?

我的场景

(    "roles" :
    [
        "role": "user",
        "role": "manager",
        "role": "admin"
    ]

    "privileges" :
    [
        "privilege": "READ",
        "privilege": "READ/WRITE",
        "privilege": "ALL"
    ] 

    "users" :
    [
        "user": "Sammy",
        "user": "Tom",
        "user": "Fred",
        "user": "Zack"
    ]

    "userPermissions" :
    [
        "admin": "Sammy",
        "manager": "Tom",
        "user": "Fred",
        "user": "Zack"
    ]
)

问题:这是在 Mongo 中为用户角色建模的合适方法吗?

【问题讨论】:

这甚至是有效的 JSON 吗? 以前不是,现在也不是。现在我看不到用户的角色。 这样更好。现在在所有东西周围添加一个根对象( ),你就有了有效的 JSON :) @LutzHorn 非常感谢。 JSON 不是我关心的问题,即使我把它宰了 :) 但这是 mongo 的合适方法吗?这通常是 mongo 开发人员如何将用户角色分解到数据库中吗? 【参考方案1】:

如果您的角色是纯字符串或原始元组,您可以将它们作为array 存储在每个用户的文档中。如果角色是复杂实体,您可以将它们存储为 doc-refs 数组。

更新:

这是我的userAccount 集合中的一个文档,由Spring Security Core Grails plugin 生成:


  "_id" : "541fdfdebaacef69047415a8",
  "authorities" : [ 
     
        "authority" : "ROLE_USER"
     ,
     
        "authority" : "ROLE_ADMIN"
     
  ],
  "password" : "lakdjalksdj87a68sd76as87d6a87sd6",
  "username" : "someusername",
  "version" : NumberLong(1)

Spring Security 及其后代是 java 中的标准安全实现,所以...

【讨论】:

那么这个“权威”与哪里有联系。以及我将如何弄清楚其他选项是什么? authorities 映射到UserAccount 域类的同名属性,它表示Authority 类的数组【参考方案2】:

Mongo DB 用户角色被定义为 JSON 文档。试试下面的链接

https://docs.mongodb.com/manual/reference/built-in-roles/

https://scalegrid.io/blog/creating-role-based-access-control-in-mongodb/

【讨论】:

以上是关于在 mongo 数据库中定义用户角色的好方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

埃式筛法筛选素数 PAT1013

使用 ObjectId 作为 mongo 中用户的唯一标识符的替代方法是啥?

在 C# 应用程序中处理不同用户角色的推荐方法是啥?

从用户代理中识别 iOS 设备的好方法是啥?

在 GWT 中指定自定义货币、数字和日期时间格式的好方法是啥?

mongo用户角色基础连接IDEA