![](/img/trans.png)
[英]firebase-admin with typescript in firebase cloud functions
[英]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.