将 Parse Server 减少为仅 Parse Cloud

Posted

技术标签:

【中文标题】将 Parse Server 减少为仅 Parse Cloud【英文标题】:Reducing Parse Server to only Parse Cloud 【发布时间】:2016-11-18 13:44:19 【问题描述】:

我目前正在使用最新的自托管 Parse Server,但我遇到了一些安全问题。

目前,对路由 /classes 的调用可以检索任何表中的任何对象,即使我可能希望一个对象公共可读,我不想显示该对象的所有参数。简而言之,我不希望在任何情况下都检索数据库,我想禁用除 Parse Cloud 代码之外的“一切”。也就是说,我可以调用我自己的函数,但不能使用客户端(androidios、C#、javascript...)来检索数据。

有没有办法做到这一点?我一直在深入寻找这个,试图调试一些控制器,但我没有任何线索。

非常感谢您。

【问题讨论】:

【参考方案1】:

tl;dr:将所有对象的 ACL 设置为仅在使用主密钥时可读,然后告诉 Cloud Code 中的查询在查询您的数据时使用 MK

因此,无需更改 Parse Server 本身,您就可以使用 ACL 并且只允许特定用户访问对象。然后,您将在您的云代码中以该用户的身份“登录”并能够访问所有对象。

作为旧方法,Parse.Cloud.useMasterKey() 在 OS Parse Server 中不可用,您必须将参数 useMasterKey 传递给您正在运行的查询,这应该可以解决此特定请求并绕过 ACL/中电。 Parse Server的Wiki也有一个例子。

为方便起见,这里有一个来自 Wiki 的简短代码示例:

Parse.Cloud.define('getTotalMessageCount', function(request, response) 
    var query = new Parse.Query('Messages');
    query.count(
        useMasterKey: true
    ) // count() will use the master key to bypass ACLs
    .then(function(count) 
        response.success(count);
    );
);

【讨论】:

我希望将来通过独特的X-Parse-Cloud-Key 控制和管理 Parse Server 会有任何改进。谢谢 ! :)

以上是关于将 Parse Server 减少为仅 Parse Cloud的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 iptables 和 parse-server (Parse Server) 将 HTTP 重定向到 HTTPs

无法将图像从 PARSE 加载到 PFTableViewCell 的 imageView 属性中

将 Parse Cloud Code 与 Parse Server Heroku 一起使用

Parse & Swift - 如何减少服务器负载/请求?

Parse Server Node.js SDK:Parse.User.become 的替代方案?

将 Objective-C iOS 应用程序迁移到自托管 Parse-Server 的问题