2017-04-03 37 views
0

我创建了一个从LoopBack用户模型继承的MyUser模型。在启动脚本中,我在MyUser模型,自定义角色中创建了一个用户,并将该角色映射到它。但是在MyUser.json文件中分配后ACL不起作用。LoopBack ACL不起作用

Bootscript.js

'use strict'; 

module.exports = function(app) { 

var User = app.models.MyUser; 
var Role = app.models.Role; 
var RoleMapping = app.models.RoleMapping; 
User.findOrCreate({ name: "Administrator", email: "[email protected]", username: "admin", password: "12345" }, function(err, succ) { 
    if (err) { 
     console.log(err); 
    } else { 
     Role.create({ name: "superUser" }, function(err, role) { 
      if (err) { 
       console.log(err); 
      } else { 
       console.log("Role created successfuly"); 
       role.principals.create({ principalType: RoleMapping.USER, principalId: succ.id }, function(err, success) { 
        if (err) { 
         console.log(err); 
        } else { 
         console.log("role mapped successfuly"); 
        } 
       }); 
      } 
     }); 
    } 
}); 

}; 

MyUser.json

"acls": [ 
{ 
    "accessType": "*", 
    "principalType": "ROLE", 
    "principalId": "superUser", 
    "permission": "ALLOW" 
} 
] 

但是,当我访问MyUser.find(获取所有用户)的API资源管理器的方法,它说

{ 
"error": { 
"statusCode": 401, 
"name": "Error", 
"message": "Authorization Required", 
"code": "AUTHORIZATION_REQUIRED", 
"stack": "Error: Authorization Required\n at ... 
} 
} 

我在做什么错?

回答

0

我认为401返回,因为findOrCreate不会返回创建的实例ID。

尽力劝慰succ.id,如果是这样的话使用UPSERT代替

0

用户都默认的ACL少。你需要先清除它。在启动

它们存储在这里

app.models.User.settings.acls = []; 

试试这个