Сокращение Parse Server до только Parse Cloud

В настоящее время я использую саморазмещенный Parse Server, но я столкнулся с некоторыми проблемами безопасности.

На данный момент звонки сделаны на маршрут /classes Я могу получить любой объект в любой таблице, и, хотя я хотел бы, чтобы объект был общедоступным для чтения, я не хотел бы показывать все параметры этого объекта. Короче говоря, я не хочу, чтобы база данных была восстановлена ​​в любом случае, я хотел бы отключить "все", кроме кода Parse Cloud. То есть я мог бы выполнять вызовы своих собственных функций, но не мог использовать клиенты (Android, iOS, C#, Javascript...) для извлечения данных.

Есть какой-либо способ сделать это? Я глубоко искал это, пытаясь отладить некоторые контроллеры, но у меня нет никакой подсказки.

Заранее большое спасибо.

1 ответ

Решение

tl;dr: установить ACL для всех объектов, которые будут доступны только для чтения при использовании мастер-ключа, а затем указать запросу в облачном коде использовать MK при запросе данных

Таким образом, не изменяя сам Parse Server, вы можете использовать ACL и разрешать доступ к объектам только определенному пользователю. Затем вы "войдете" под этим именем в свой облачный код и сможете получить доступ ко всем объектам.

Как старый метод, Parse.Cloud.useMasterKey() недоступен в ОС Parse Server, вам придется передать параметр useMasterKey на запрос, который вы выполняете, который должен выполнить трюк для этого конкретного запроса и обойти ACL/CLP. В Wiki о Parse Server также есть пример.

Для удобства ниже приведен пример короткого кода из вики:

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);
    });
});
Другие вопросы по тегам