gpt4 book ai didi

javascript - 如何在mongodb中为用户和管理员赋予不同的权限

转载 作者:可可西里 更新时间:2023-11-01 09:56:49 26 4
gpt4 key购买 nike

我正在使用 sails 和 MongoDB 创建一个应用程序。我需要三个级别的用户。

  • super 管理员
  • 管理员
  • 用户

我想给每个用户不同的权限

  • super 管理员可以访问整个数据库。
  • 管理员可以访问与该字段相关的数据
  • 用户可以访问与用户相关的数据。

那么如何为不同类型的用户使用不同的模式。并限制一个用户访问其他资源。

最佳答案

I want to give the different privileges for each of user

  • Super admin can access whole DB.
  • Admin can access the data relate to that field
  • User can access the data related to the user.

您主要需要的是文档级访问控制,用户可以在其中根据特定字段中的值访问文档。不幸的是,从 3.0 版开始,还没有任何内置方法可以在文档/字段级别提供访问控制。Mongo 的 ACL 仅适用于集合级别。

..So how to use different schema for the different type of user. and restrict one user to access the other resources.

由于上述原因,如果“资源”指的是“文档”,仅在数据库级别这是不可能的。但是,您仍然可以设法在应用程序级别 (sailJS) 上实现类似的功能。在数据库级别,您能做的最好的事情就是将该用户文档移动到不同的集合。您可以使用 createRole() 方法创建 Angular 色并指定其权限

对于 super 管理员:

db.createRole({ role: "SuperAdmin",
privileges: [
{ resource: { db: "myCustomDB", collection: "" }, actions: [ "find", "update", "insert", "remove" ]}
],
roles: []
})

super 管理员可以访问 myCustomDB 数据库中的所有集合并执行查找更新插入删除操作

对于管理员:

db.createRole({ role: "Admin",
privileges: [
{ resource: { db: "myCustomDB", collection: "AdminCollection" }, actions: [ "find", "update", "insert", "remove" ]},
{ resource: { db: "myCustomDB", collection: "" }, actions: [ "find"]}
],
roles: []
})

管理员可以访问自己集合中的所有文档并执行 CRUD 操作。但是,他们对数据库中的任何其他集合只有只读访问权限。

对于用户:

db.createRole({ role: "User",
privileges: [
{ resource: { db: "myCustomDB", collection: "UserCollection" }, actions: [ "find", "update", "insert", "remove" ]}
],
roles: []
})

注意:如果您使用的是 2.4(或更低版本),则需要将该用户集合移动到不同的数据库。 MongoDB 2.4(及以下)ACL 仅进入数据库级别。

关于javascript - 如何在mongodb中为用户和管理员赋予不同的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30930678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com