在 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 数据库中定义用户角色的好方法是啥的主要内容,如果未能解决你的问题,请参考以下文章
使用 ObjectId 作为 mongo 中用户的唯一标识符的替代方法是啥?