[英]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.