2014-11-24 32 views
0

来自关系数据库的背景我发现很容易将用户及其角色分解为规范化表格。但是在mongo数据库中做到这一点的习惯方式是什么?在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"} 
    ] 
}) 

问:这是在蒙戈用户角色模型以适当的方式?

+0

这甚至有效的JSON? – 2014-11-24 16:03:44

+0

@LutzHorn应该是 – stackoverflow 2014-11-24 16:11:52

+0

以前不是,现在还不是。现在我看不到用户的角色。 – 2014-11-24 16:12:36

回答

2

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

UPDATE:

这是从我的收藏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

查看更多 – injecteer 2014-11-24 16:38:46

+0

,那么这个“权威”与什么关系呢?以及我如何弄清楚其他选项是什么? – stackoverflow 2014-11-24 17:57:50

+0

'authorities'映射到'UserAccount'域类的同名命名属性,它表示一个'Authority'类的数组 – injecteer 2014-11-24 22:11:47

相关问题