2014-11-24 61 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

相關問題