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

时间:2014-11-24 16:02:51

标签: java mongodb user-roles

来自关系数据库背景我发现很容易将用户及其角色分解为规范化表。但是在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中建模用户角色的合适方式吗?

2 个答案:

答案 0 :(得分:2)

如果您的角色是纯字符串或原始元组,则可以将它们存储为每个用户文档中的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中的标准安全实现,所以......

答案 1 :(得分:0)