如何验证对Firebase的客户端调用

时间:2019-05-09 15:10:02

标签: reactjs firebase firebase-realtime-database firebase-authentication mern

我无法验证对Firebase实时数据库的客户端调用。

链接到我的MERN应用程序qupp上的页面,您可以在其中了解该网站的工作原理(请注意,我只是出于实验目的而构建此应用程序,此应用程序的逻辑思路有些空白)。随时搜索和添加歌曲。

我的应用程序允许任何匿名用户访问我的网站,通过Spotify的API搜索歌曲,并将该歌曲/数据添加到我的网站上使用Firebase(Firebase和syncState持久保存的队列)中,以便其实时和多个用户可以同时添加到队列中)。虽然这是公开的,但我想锁定Firebase数据库,以便只有我的网站才能写入它。

这将阻止黑客删除/操纵队列中的数据。

目前,我的Firebase数据库规则都已设置为读/写:true。如果我将它们设置为安全的,例如“ auth!== null”,那么我当然不能再从我的站点写入数据库了。但是我无法弄清楚如何在不让每个用户登录我的网站的情况下对电话进行身份验证。

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

注意。 Firebase在我的应用程序中被用作客户端(因为它与React一起用于同步状态),所以我不相信我可以使用firebase-admin SDK来对服务器进行身份验证,从而进行经过身份验证的调用。

我的想法是,每当我的应用程序初始化时(在我的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”
  }

0 个答案:

没有答案