Можно ли проверить ключи среды, которые использует Parse Server, в клиентском приложении?

Мне было интересно, можно ли/как проверить переменные окружения Parse-Server внутри клиентского приложения IOS.

Для тех из нас, кто еще не чувствует себя комфортно с бэкэнд-системами, было бы полезно иметь возможность проверять через клиентскую сторону во время тестирования, что бэкэнд-сервер Parse-Server действительно использует правильные ключи среды.


person digitalR    schedule 25.05.2016    source источник
comment
Вы уверены, что хотите продолжить использование Parse? В следующем году он отключится.   -  person Math is Hard    schedule 26.05.2016
comment
Нет. Я скоро покину Parse. Просто хотел решить эту проблему, чтобы я мог продолжать использовать свою исходную перенесенную базу данных в mLab.   -  person digitalR    schedule 26.05.2016


Ответы (1)


Если вы тестируете ключи для настройки сервера синтаксического анализа, такие как appId, clientKey, masterKey, вы можете реализовать облачный код проверки.

Как только вы используете appId (или вы установили clientKey), вы можете вызвать эту функцию. В противном случае вы получите ошибки. Вы не можете использовать MasterKey в client-sdk. Если вы все еще хотите протестировать его, вы можете реализовать rest API с masterKey на своем клиенте. Но masterKey не должен отображаться на стороне клиента, вам следует избегать срабатывания пользователя, иначе кто-то может получить ваш masterKey.

Parse.Cloud.define("verify", function(request, response) {
    if(request.master==true){
        response.success(true);
    }else{
        response.error(new Error('MasterKey not matched'));
    }
});

Отредактировано

Внедрив объект globalConfig, проверьте его по своему усмотрению.

Вот образец.

globalConfig.js

var globalConfig = {};

globalConfig.verify = function(key) {
    return globalConfig.keys.testKey==key;
}

module.exports = globalConfig;

index.js (частичный)

var globalConfig = require('./globalConfig.js');
var initObj = {
  databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: process.env.APP_ID || 'myAppId',
  masterKey: process.env.MASTER_KEY || '', //Add your master key here. Keep it secret!
  serverURL: process.env.SERVER_URL || 'http://localhost:1337/parse',  // Don't forget to change to https if needed
  liveQuery: {
    classNames: ["Posts", "Comments"] // List of classes to support for query subscriptions
  },
  testKey: "this is test"
}
var api = new ParseServer(initObj);
globalConfig.keys = initObj;

а затем вы можете использовать globalConfig.verify() для проверки ваших ключей

пример облачного кода

var globalConfig = require('../globalConfig.js');
Parse.Cloud.define('verify', function(req, res) {
  res.success(globalConfig.verify(req.params.testKey));
});

или вы можете использовать экспресс-почту

app.post('/test', function(req, res) {
    //verify and response
})
person ChunTingLin    schedule 26.05.2016
comment
Я хочу проверить значение fileKey, так как у меня возникают проблемы с запросом коллекций, которые имеют типы PFFile. Они терпят неудачу с внутренней ошибкой сервера. Поэтому хочу исключить fileKey, так как я думаю, что устанавливаю правильно. Предложенный вами метод кажется интересным. Однако не уверен, как реализовать. Кажется, мне нужно знать, какой объект в parse-server содержит ключи среды, по крайней мере. - person digitalR; 26.05.2016
comment
Как вы настраиваете parse-server, аналогично parse-server-example? - person ChunTingLin; 26.05.2016
comment
Да. Сначала я использовал кнопку «Развернуть в AWS» на одной из страниц с практическими рекомендациями. Затем я клонировал parse-server-example, отредактировал index.js и package.json. Затем я загрузил новый zip и развернул его в экземпляре parse-server-example. - person digitalR; 26.05.2016
comment
Вы элегантно ответили на вопрос. Я тянусь к чему-то другому, пытаясь понять, почему моя реализация Parse-Server не работает с PFFiles. Но для поставленного вопроса это решение для захвата переменных среды в другой переменной дает хороший ответ. Спасибо. - person digitalR; 27.05.2016