繁体   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