我的模型名为员工,其属性为
"name":"",
"dob":"",
"location":""
环回框架中的一些默认角色是
$authenticated
$everyone
我想
1.允许$authenticated
角色访问模型员工 [ READ和WRITE ]。
2.允许$everyone
仅对 [READ] 的角色除位置属性之外的模型属性[仅允许ROLE $读取位置身份验证的的。 ,
我在employee.json中添加了以下配置,但确实无法正常工作。
{
"accessType": "READ",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "ALLOW"
},
{
"accessType": "READ",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY",
"property": "location"
}
搜索了很多,无法找到代码。
答案 0 :(得分:0)
我认为您可以在employee.json
:
...
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "READ",
"principalType": "ROLE",
"principalId": "$authenticated",
"permission": "ALLOW"
},
{
"accessType": "WRITE",
"principalType": "ROLE",
"principalId": "$authenticated",
"permission": "ALLOW"
}
]
…
关于问题2) - 我认为这在LoopbackJS中实际上是不可能的(不确定)。
property
属性用于访问您在employee.js
文件中定义的自定义方法(remoteMethods名称),而不是模型的属性。
答案 1 :(得分:0)
下面的代码将在我的场景下编写代码,但它并不完美,它是一种解决方法,有一种名为mixins的方法论,它可以完成那些任务。由于我的问题没有得到解决,我正在给出解决方案
Employee.afterRemote('**', function(ctx, result, next) {
if(ctx.result) {
if(Array.isArray(ctx.result)) {
ctx.result.forEach(function (result) {
var is_logged_in = ctx.req.accessToken;
if(is_logged_in == null){
console.log('1');
result.unsetAttribute('location')
}
});
} else {
ctx.result.unsetAttribute('location')
}
}
next();
});