使用用户模型在环回中获得401错误

时间:2016-10-15 06:59:44

标签: javascript node.js database-migration loopbackjs strongloop

我的另一个数据库中有超过5k用户的列表,我想要在loopback DB中迁移所有用户,存在许多重复用户,以便我检查用户是否存在然后我更新用户,否则我我在创造新的。我已经写了一个脚本。它工作正常,但在更新第一个用户后,如果我执行GET用户详细信息API,则loopback开始抛出错误401 Unauthorized。即使我允许Unauthenticated用户访问更新,使用ACL创建属性,但它也不能使用它。

我扩展了用户模型。

任何人都可以请一些光吗?帮助将被指定!

由于

1 个答案:

答案 0 :(得分:1)

LoopBack的默认ACL比您定义的更具体,因此您的默认ACL最终没有效果。 @authenticated和@unauthenticated ALLOW规则没有优先于DENY所有规则。但是自定义角色会这样做,并且使用自定义let w : Wrapper = 1 角色是框架中的正确方法。

  1. 您需要为特定用户创建角色。
  2. 使用RoleMapping模型将该角色映射到用户。
  3. 步骤1和2可以使用此启动脚本完成(例如:ADMINISTRATOR):

    App/server/boot/create-admin-user.js
    1. 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写入:
    2. ```

      ADMINISTRATOR