我使用MEANjs创建应用程序并使用yo生成器添加了CRUD模块。我还在应用程序中注册了两个用户。之后,用户1'我创建了一些记录。现在我需要允许用户2'更新用户1'的记录。默认情况下,这是不允许的,但我需要覆盖该逻辑,并允许每个具有角色'用户'编辑每个现有记录,甚至是那些不是由他创建的记录。我无法找到如何做到这一点。任何人都可以分享一些见解吗?
答案 0 :(得分:0)
由于您似乎不希望每个用户都具有“admin”角色(授予总控制权),因此您需要编辑CRUD模块中的策略文件。
使用文章模块有一个例子:
如果您转到/modules/articles/server/policies/articles.server.policy.js
,则需要更新角色“user”的权限:
, {
roles: ['user'],
allows: [{
resources: '/api/articles',
permissions: ['get']
}, {
resources: '/api/articles/:articleId',
permissions: ['get']
}]
},
要允许任何用户编辑文章,请为数组添加“put”权限:
, {
resources: '/api/articles/:articleId',
permissions: ['get', 'put']
}
其他可能的解决方案是在Article模型模式(位于/modules/articles/server/models/article.server.model.js
中)创建一个ObjectIds数组,它将存储允许编辑文章的所有用户ID。像这样:
allowedUsers: [{ type : ObjectId, ref: 'User' }]
但是,通过这种方式,您需要为策略文件中定义的isAllowed
中间件添加更多逻辑,以便每当有人更新文章时,您将检查article.allowedUsers数组是否包含用户的ID发出请求(req.user
id)。