От вашего вопроса, я предполагаю, что это на Angular на клиенте.В этом случае вы не хотите использовать мастер-ключ.Если бы я загружал вашу страницу, я мог бы получить ваш главный ключ и увидеть URL вашего сервера синтаксического анализа, и я смог бы прочитать любые данные, используя остальные API вашего сервера синтаксического анализа.Я мог бы создать или удалить любые данные, которые я хотел.
Чтобы решить эту проблему, используйте облачный код на вашем сервере.Так, например, если вы хотите разрешить «пользователю а» отправлять электронную почту «пользователю б», вы не сможете сделать это на клиенте, потому что без мастер-ключа нет способа получить «пользователя».Электронная почта b на клиенте пользователя a.
Итак, вы создаете облачную функцию sendEmail
, которая принимает два параметра: идентификатор пользователя для отправки электронной почты и сообщение для отправки.Непроверенный код будет выглядеть примерно так:
const sendEmail = async function sendEmail(request) {
const { user: sender } = request;
const { id, message } = request.params;
const recipient = await Parse.Query(Parse.User).get(id, { useMasterKey: true });
console.log(recipient.get('email')); // now we have the user's email!
..... // code to actually send email here...
}
Parse.Cloud.define('sendEmail', sendEmail);
И затем вы можете вызывать его из внешнего интерфейса, например:
Parse.Cloud.run('sendEmail', { id: 'objectId', message: 'hi' });
Этот шаблон позволяет вам выполнять привилегированные вещи, такие как получениеэлектронная почта пользователя без раскрытия вашего главного ключа всем, кто загружает вашу страницу.