Loopbackjs 某些记录上的ACL而不是API URL

Loopbackjs 某些记录上的ACL而不是API URL,loopbackjs,strongloop,loopback,Loopbackjs,Strongloop,Loopback,我被一个登录用户可以在类似CMS的系统中创建博客帖子的场景所困扰。因此,他在后端系统中创建这些帖子 当该用户在中的管理面板的Blog页面上时,会发送如下API请求: /api/blogs?filter={'userid': '100'} 这将获取此用户的所有博客帖子。此用户只能查看和编辑自己的博客文章 但如果他将URL更改为以下内容: /api/blogs?filter={'userid': '1'} 然后他可以得到其他用户的博客帖子,我不允许这样做 我知道环回有ACL。但据我所知,这只能对

我被一个登录用户可以在类似CMS的系统中创建博客帖子的场景所困扰。因此,他在后端系统中创建这些帖子

当该用户在中的管理面板的
Blog
页面上时,会发送如下API请求:

/api/blogs?filter={'userid': '100'}
这将获取此用户的所有博客帖子。此用户只能查看和编辑自己的博客文章

但如果他将URL更改为以下内容:

/api/blogs?filter={'userid': '1'}
然后他可以得到其他用户的博客帖子,我不允许这样做

我知道环回有ACL。但据我所知,这只能对整个
GET
POST
等请求进行限制。换句话说,用户可以调用
/api/blogs
,也可以不调用

在这种情况下,我希望用户能够调用API url。但我想禁止查看某些记录


我应该如何在环回中以动态的方式处理这种情况?

如果我完全理解您,您的问题可以通过“远程方法”和“远程挂钩”解决

module.exports = function (Blog){

    Blog.getBlogs = function(userid, cb){
        // Db operation.
        // Fetch blogs by userid.
        cb(null, blogs);
    };

    Blog.remoteMethod('getBlogs', {
        accepts: {arg: 'userid', type: 'number'},
        returns: {arg: 'blogs', type: 'object'}
    });

    Blog.beforeRemote('getBlogs', function(ctx, unused, next) {
        if(ctx.req.accessToken) {
            // Fetch user id by accesToken
            // Compare user id's
            next();
        } else {
            next(new Error('You are not allowed to get these messages'))
        }
    });
}
因为您定义了远程钩子,所以在执行之前可以检查一些东西。您可以获取与访问令牌相关的用户id。然后比较从参数获取的用户id和传入的用户id

您可以从环回文档中获得更多详细信息