Как аутентифицировать клиентские звонки в Firebase - PullRequest
0 голосов
/ 09 мая 2019

Я не могу аутентифицировать мои клиентские звонки в мою базу данных Firebase Realtime.

Ссылка на страницу в моем приложении MERN qupp , где вы можете получить представление о том, как работает сайт (пожалуйста, обратите внимание, я строю это только для экспериментов, в логике этого приложения есть дыры).Не стесняйтесь искать и добавлять песни.

Мое приложение позволяет любым анонимным пользователям посещать мой сайт, искать песни с помощью API Spotify и добавлять эту песню / данные в очередь на моем сайте, которая сохраняется с помощью Firebase (Firebaseи syncState, так что его в реальном времени и несколько пользователей могут добавлять в очередь одновременно).Пока это общедоступно, я хочу заблокировать базу данных Firebase, чтобы только мой веб-сайт мог писать в нее.

Это помешало бы хакерам удалять / манипулировать данными в очереди.

В данный момент мойПравила базы данных Firebase настроены на чтение / запись: true.Если я установлю их как «auth! == null», то, конечно, я больше не смогу писать в БД с моего сайта.Но я не могу понять, как аутентифицировать мои звонки без того, чтобы каждый пользователь заходил на мой сайт.

"rules": {
    ".read": true,
    ".write": true
}

Примечание.Firebase используется на стороне клиента в моем приложении (так как он работает с React для синхронизации состояния), и поэтому я не верю, что могу использовать firebase-admin SDK для аутентификации моего сервера и, следовательно, для выполнения аутентифицированных вызовов.

Anу меня была идея, что всякий раз, когда мое приложение инициализируется (в моем файле base.js), я вхожу сюда, чтобы мое приложение Firebase проходило аутентификацию, но я не могу найти способ сделать это.

client / src / base.js

import Rebase from 're-base';
import firebase from 'firebase';

const {
    FIREBASE_API_KEY
} = process.env;

const firebaseApp = firebase.initializeApp({
    apiKey: FIREBASE_API_KEY,
    authDomain: "qupp-xxxx.firebaseapp.com",
    databaseURL: "https://qupp-xxxx.firebaseio.com"
});

const base = Rebase.createClass(firebaseApp.database());

export { firebaseApp };

export default base;

Мой предполагаемый результат заключается в том, что мой сайт может писать в мою базу данных Firebase, когда для правил установлено:

"rules": {
    ".read": “auth !== null”,
    ".write": “auth !== null”
  }
...