Loopbackjs 某些记录上的ACL而不是API URL
我被一个登录用户可以在类似CMS的系统中创建博客帖子的场景所困扰。因此,他在后端系统中创建这些帖子 当该用户在中的管理面板的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。但据我所知,这只能对
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
您可以从环回文档中获得更多详细信息