簡體   English   中英

Firebase 安全規則:“auth != null”不適用於來自 firebase-admin 的查詢

[英]Firebase Security Rules: "auth != null" does not work for queries from firebase-admin

我有一個程序,它在每個頁面上加載我的 firebase 憑證並初始化 auth = firebase.auth()。 此外,我還包括 auth.onStateChanged function 以確定用戶的身份驗證 state 是否有任何變化。

但是,在嘗試從數據庫中檢索信息時(主要是在刷新我的頁面時),它說:

客戶端無權訪問所需數據。

當我嘗試從特定節點檢索數據時,我有規則“auth != null”,這不起作用,但是當我也將其更改為“auth == null”時,它確實起作用了 因此,這意味着即使我有 auth.onStateChange function,firebase 數據庫規則中的 auth 也沒有改變

我能夠在瀏覽器控制台中打印 auth 變量,它絕對不是 null。

我 go 如何解決此問題以確保在允許 firebase 安全規則檢查 auth 變量之前建立/連接 auth?

main.js(客戶端)

var config = {
    apiKey: "X",
    authDomain: "X",
    databaseURL: "X",
    projectId: "X",
    storageBucket: "X",
    messagingSenderId: "X",
    appId: "X",
    measurementId: "X"
};

firebase.initializeApp(config);
firebase.analytics();
var auth = firebase.auth();

auth.onAuthStateChanged(user => {
  if (user) {
  // code for signed in user
  } else {
  // code for not signed in user
  }

});

index.js(服務器)

var firebase = require('firebase/app');

require("firebase/auth");
require('firebase/database');
require("firebase/firestore");
var admin = require('firebase-admin');

var config = {
  apiKey: process.env.APIKEY,
  authDomain: process.env.AUTHDOMAIN,
  databaseURL: process.env.DATABASEURL,
  projectId: process.env.PROJECTID,
  storageBucket: process.env.STORAGEBUCKET,
  messagingSenderId: process.env.MESSAGINGSENDERID,
  appId: process.env.APPID,
  measurementId: process.env.MEASUREMENTID
};
firebase.initializeApp(config);

admin.initializeApp({
  credential: admin.credential.cert('./serviceAccountKeys directory'),
  databaseURL: "X"
});

/*
using firebase commands to access firebase content such as:
  - firebase.database().ref
*/

編輯 1:

我的查詢是“firebase.database().ref('db-bank/')”

數據庫如下所示:

/db-bank/content1

firebase 規則是:

"db-bank": {
  ".read": "auth != null",
  ".write": false,
},

在后端使用 Firebase Admin SDK 的代碼不受安全規則的影響。 讀:

規則僅適用於用戶實際登錄的客戶端應用程序代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM