我刚刚开始使用loopback,而且我遇到了ACL . 我的数据库有这样的关系:
用户有很多测试和测试有很多用户(很多用户,在环回我使用hasmany通过) .
每个测试有几个部分(一个到多个)
每个部分有几个问题(一对多)
现在,我想获得用户拥有的所有部分,或者用户拥有的所有问题 . 我知道使用$ owner需要在相应的模型中使用belongsTo,但在我的情况下这是不可能的 . 有没有办法实现这一点,而无需完全编写我自己的查询?
不幸的是,$ owner角色不能用作过滤器,而是在指定实例ID时作为 endpoints 的安全访问;基本上它只在你执行 findById 时有效,但在你执行 find 时却不行 .
例:
GET /api/tests/ 什么都不做 . 当前用户看到所有测试 . 不执行过滤
/api/tests/
GET /api/tests/{id} 检查当前登录的userId是否与您尝试检索的测试中的userId相对应 . 如果userIds匹配,则用户可以查看此特定测试 . 如果它们不匹配则会出现AUTHORIZATION_REQUIRED或ACCESS_DENIED错误(我不记得是哪一个) .
/api/tests/{id}
正如我刚刚在_1016276中写的那样,你可能想看看创建一个Mixin .
1 回答
不幸的是,$ owner角色不能用作过滤器,而是在指定实例ID时作为 endpoints 的安全访问;基本上它只在你执行 findById 时有效,但在你执行 find 时却不行 .
例:
GET
/api/tests/
什么都不做 . 当前用户看到所有测试 . 不执行过滤GET
/api/tests/{id}
检查当前登录的userId是否与您尝试检索的测试中的userId相对应 . 如果userIds匹配,则用户可以查看此特定测试 . 如果它们不匹配则会出现AUTHORIZATION_REQUIRED或ACCESS_DENIED错误(我不记得是哪一个) .正如我刚刚在_1016276中写的那样,你可能想看看创建一个Mixin .