AngularJS JavaScript SDK (lb-service.js) & ACL : 其中 属性 为相关模型

AngularJS JavaScript SDK (lb-service.js) & ACL : which property for a related model

我正在开发一个音乐应用程序,包含流派和子流派。 我们在后端使用环回,在前端使用 angularJS 和 cordova & ionic。

我无法通过 ACL 授权一个看起来像 Genre/:id/Subgenre 的请求,为此我有一个通过 lb-service.js 自动创建的属性:Genre.subGenre()

流派和子流派模型的关系类型都是 "hasAndBelongsToMany"。

这是我在前端用来执行 API 请求的 angular 控制器:

$scope.genres = [];

Genre.find().$promise.then(function(res) { //this request works : goes to GET /Genres endpoint
  $scope.genres = res;
  $scope.genres.forEach(function(genre) {

    genre.checked=false;
    genre.subgenres = [];
    Genre.subGenres({id: genre.id}).$promise.then(function(r){ //it is this one that doesn't work, GET /Genres/:id/SubGenre endpoint

      genre.subgenres = r;
      genre.subgenres.forEach(function(s){
        s.checked=false;
      });
    });
  });
});

这是 lb-service.js 中提供 Genre.subGenre() 属性:

的代码
    // INTERNAL. Use SubGenre.genres() instead.
    "prototype$__get__genres": {
      isArray: true,
      url: urlBase + "/SubGenres/:id/genres",
      method: "GET"
    },

这里是流派模型中的代码,用于授权 Genre.subGenre() 属性 访问 API 属性 :

"acls": [
  {
    "accessType": "*",
    "principalType": "ROLE",
    "principalId": "$everyone",
    "permission": "DENY"
  },
  {
    "accessType": "EXECUTE",
    "principalType": "ROLE",
    "principalId": "$authenticated",
    "permission": "ALLOW",
    "property": "subGenres" // this is to authorize Genre.subGenre(), doesn't works => 401 error.
  },
  {
    "accessType": "EXECUTE",
    "principalType": "ROLE",
    "principalId": "$authenticated",
    "permission": "ALLOW",
    "property": "find" // this is to authorize Genre.find(), it works
  }

看起来是 属性 不正确,因为当我做同样的事情来授权 Genre.find() 请求时,它起作用了。

非常感谢您的帮助。

实际上我发现我只需要更改 ACL :

"accessType": "EXECUTE"

进入

'"accessType": "READ"