Сокращение 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);
});
});