6

我一直在寻找有关如何使用用户角色制作典型网站 MVC 权限系统的教程。

我已经使用 SQL 和关系完成了这些事情,但在 nosql 数据库中,它的做法不同(我假设)。

我想到的是这样的

//Role objects
{Roles : [
{
    '_id' : 'uniqueId',
    'role_name' : 'admin',
    'permissions_granted' : [array of permission strings]
},
{
    '_id' : 'uniqueId',
    'role_name' : 'user',
    'permissions_granted' : [array of permission strings]
},
{
    '_id' : 'uniqueId',
    'role_name' : 'guest',
    'permissions_granted' : [array of permission strings]
}
]}

//User objects
{Users: [
{
    '_id' : 'uniqueId',
    'username' : 'mike',
    'password' : 'mypass',
    'permissions' : [an instance of role group, or its id ? ]
},
{
    '_id' : 'uniqueId',
    'username' : 'jonny',
    'password' : '123',
    'permissions' : [???]
}
]}

我怎么能做一个单一的查询来获取用户数据+它的权限?使用 2 个查询是否有缺点,一个是获取用户的角色 ID,然后从角色文档中获取权限。? 在 mongodb 等 nosql 数据库中如何处理用户权限

4

1 回答 1

1

您应该使用 ID 而不是对象本身。这样您就可以轻松更新所有内容。如果您有一个场景,当您经常读取权限并且很少写入(我假设)时,您可以另外存储角色 ID 以及用户的实际权限(基于其角色)

但是,每次更新角色时,您都需要更新这些权限。但是在查询用户时,您会立即获得角色,这比使用 2 个单独的查询要快得多。

于 2014-05-28T23:47:30.557 回答