Vis*_*hra 2 javascript mongoose mongodb sails.js
我正在使用sails和MongoDB创建一个应用程序.我需要三级用户的地方.
我想为每个用户提供不同的权限
所以如何为不同类型的用户使用不同的架构.并限制一个用户访问其他资源.
我想为每个用户提供不同的权限
- 超级管理员可以访问整个DB.
- 管理员可以访问与该字段相关的数据
- 用户可以访问与用户相关的数据.
您需要的主要是文档级访问控制,用户可以document根据特定字段中的值访问.不幸的是,从版本3.0开始,还没有任何内置的方法来提供文档/字段级别的访问控制.Mongo的ACL仅转到Collection级别.
..那么如何为不同类型的用户使用不同的模式.并限制一个用户访问其他资源.
由于上面提到的原因,如果"资源"是指"文档",那么仅在数据库级别这是不可能的.但是,您仍然可以设法在应用程序级别(sailJS)上实现类似的功能.在数据库级别,您可以做的最好的事情是将用户文档移动到不同的集合.您可以使用createRole()方法创建角色并指定其权限.
对于SuperAdmins:
db.createRole({ role: "SuperAdmin",
privileges: [
{ resource: { db: "myCustomDB", collection: "" }, actions: [ "find", "update", "insert", "remove" ]}
],
roles: []
})
Run Code Online (Sandbox Code Playgroud)
SuperAdmins有权访问myCustomDB数据库中所有集合和执行find,update,insert和remove行动
对于管理员:
db.createRole({ role: "Admin",
privileges: [
{ resource: { db: "myCustomDB", collection: "AdminCollection" }, actions: [ "find", "update", "insert", "remove" ]},
{ resource: { db: "myCustomDB", collection: "" }, actions: [ "find"]}
],
roles: []
})
Run Code Online (Sandbox Code Playgroud)
管理员可以访问自己集合中的所有文档并执行CRUD操作.但是,它们只具有对数据库中任何其他集合的只读访问权限.
对于用户:
db.createRole({ role: "User",
privileges: [
{ resource: { db: "myCustomDB", collection: "UserCollection" }, actions: [ "find", "update", "insert", "remove" ]}
],
roles: []
})
Run Code Online (Sandbox Code Playgroud)
注意:如果您使用的是2.4(或更低版本),则需要将该用户集合移动到其他数据库.MongoDB 2.4(及以下)ACL仅转到数据库级.
| 归档时间: |
|
| 查看次数: |
1175 次 |
| 最近记录: |