我创建了一个继承自LoopBack User模型的模型MyUser。在启动脚本中,我在MyUser模型中创建了一个用户,自定义角色并将该角色映射到该角色。但是在MyUser.json文件中分配后,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: "admin@user.com", 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"
}
]
但是当我在api explorer中访问MyUser.find(获取所有用户)方法时,它说
{
"error": {
"statusCode": 401,
"name": "Error",
"message": "Authorization Required",
"code": "AUTHORIZATION_REQUIRED",
"stack": "Error: Authorization Required\n at ...
}
}
我做错了什么?
答案 0 :(得分:0)
我认为401返回,因为findOrCreate不返回创建的实例id。
尝试控制succ.id,如果是这种情况则使用upsert而不是
答案 1 :(得分:0)
默认情况下,用户的ACL很少。你需要先清除它。他们在这里存储
app.models.User.settings.acls = [];
在启动时尝试此操作