如何根据应用的 acl 限制在回送 3 中调用模型 "find" 的数据?

How to restrict data which comes from calling "find" of model in loopback 3 based on acl applied?

考虑了三个模型,与此问题相关的领域如下 -
用户 - id
项目 - id,project_name
ProjectMember - id, user_id, project_id

当我调用 "find" 时,它列出了所有适合 "admin" 用户的项目,但对于 "non admin" 用户,我只想显示他们的项目。

在环回 3 中实现此目的的最佳方法是什么?我是否需要覆盖 "find" 或者是否有任何我缺少的回送方式?

我会选择 before remote 钩子:

Project.beforeRemote( 'find', function( ctx, next) {
    // here you can modify your query by adding a role based filter to your query
    next();
});

甚至更好access操作挂钩:

Project.observe('access', function( ctx, next) {
    // here you can modify your query by adding a role based filter to your query
    next();
});

在那里你可以 运行 额外的查询来检查给定的用户是否有权访问给定的项目实例。