2017-04-03 3 views
0

LoopBack Userモデルから継承したモデルMyUserを作成しました。ブートスクリプトでは、MyUserモデル、カスタムロールでユーザーを作成し、そのロールをそのロールにマップしました。しかし、ACLは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: "[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をコンソールに

試してみて、これはケースの使用アップサートであれば代わりに

0

ユーザーは、デフォルトでは、いくつかのACLを持っています。最初にクリアする必要があります。彼らはここに保存

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

ブート

でこれを試してみてください
関連する問題