Loopback:如何在 mixin 中定义 ACL 规则?
Loopback: How to define ACL rules in a mixin?
我想定义一组 ACL 规则,这些规则应该可以通过使用 mixins 轻松移植和扩展。
在 MyModel.json
中为某些模型 MyModel 定义这些是微不足道的:
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
}]
这行得通,并且可以正确阻止每个人的 API 调用。然而,当我在混合中做同样的事情(或者我认为)时,它不起作用:
module.exports = function (Model, options) {
Model.getApp(function (err, app) {
app.models.ACL.create({
model: Model.modelName,
accessType: '*',
principalType: 'ROLE',
principalId: '$everyone',
permission: 'DENY'
}, function (err, acl) {
console.log('ACL entry created: %j', acl);
});
});
};
缺少什么?
通过源代码查看 Loopback 本身如何在配置时注册 ACL 后,以下似乎是在混合中执行此操作的正确方法:
module.exports = function (Model, options) {
Model.settings.acls.push({
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
});
};
我想定义一组 ACL 规则,这些规则应该可以通过使用 mixins 轻松移植和扩展。
在 MyModel.json
中为某些模型 MyModel 定义这些是微不足道的:
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
}]
这行得通,并且可以正确阻止每个人的 API 调用。然而,当我在混合中做同样的事情(或者我认为)时,它不起作用:
module.exports = function (Model, options) {
Model.getApp(function (err, app) {
app.models.ACL.create({
model: Model.modelName,
accessType: '*',
principalType: 'ROLE',
principalId: '$everyone',
permission: 'DENY'
}, function (err, acl) {
console.log('ACL entry created: %j', acl);
});
});
};
缺少什么?
通过源代码查看 Loopback 本身如何在配置时注册 ACL 后,以下似乎是在混合中执行此操作的正确方法:
module.exports = function (Model, options) {
Model.settings.acls.push({
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
});
};