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"
我正在开发一个音乐应用程序,包含流派和子流派。 我们在后端使用环回,在前端使用 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"