我的另一个数据库中有超过5k用户的列表,我想要在loopback DB中迁移所有用户,存在许多重复用户,以便我检查用户是否存在然后我更新用户,否则我我在创造新的。我已经写了一个脚本。它工作正常,但在更新第一个用户后,如果我执行GET用户详细信息API,则loopback开始抛出错误401 Unauthorized。即使我允许Unauthenticated用户访问更新,使用ACL创建属性,但它也不能使用它。
我扩展了用户模型。
任何人都可以请一些光吗?帮助将被指定!
由于
答案 0 :(得分:1)
LoopBack的默认ACL比您定义的更具体,因此您的默认ACL最终没有效果。 @authenticated和@unauthenticated ALLOW规则没有优先于DENY所有规则。但是自定义角色会这样做,并且使用自定义let w : Wrapper = 1
角色是框架中的正确方法。
步骤1和2可以使用此启动脚本完成(例如:ADMINISTRATOR
):
App/server/boot/create-admin-user.js
module.exports = function(app) {
var User = app.models.ExtendedUser;
var Role = app.models.Role;
var RoleMapping = app.models.RoleMapping;
User.findOrCreate({ where: { username: 'admin', email: 'admin@admin.com' } },
{
username: 'admin',
email: 'admin@admin.com',
password: 'admin123'
},
function(err, user) {
if (err) return console.log(err);
// Create the admin role
Role.findOrCreate({where: { name: 'ADMINISTRATOR' }},
{ name: 'ADMINISTRATOR' },
function(err, role) {
if (err) return debug(err);
console.log("Role Created: " + role.name);
// Assign admin role
RoleMapping.findOrCreate({where: { roleId: role.id, principalId: user.id }},
{ roleId: role.id, principalId: user.id, principalType: RoleMapping.USER },
function(err, roleMapping) {
if (err) return console.log(err);
console.log("ADMINISTRATOR Role assigned to " + user.username);
});
});
});
};
模型中创建一个ACL条目,以允许ROLE ExtendedUser
写入:```
ADMINISTRATOR