gpt4 book ai didi

javascript - Firebase 权限被拒绝

转载 作者:行者123 更新时间:2023-12-01 22:09:25 25 4
gpt4 key购买 nike

我对编码还比较陌生,并且遇到了麻烦。

我有这段代码可以将数据发送到 firebase

app.userid = app.user.uid

var userRef = app.dataInfo.child(app.users);

var useridRef = userRef.child(app.userid);

useridRef.set({
locations: "",
theme: "",
colorScheme: "",
food: ""
});

但是,我不断收到错误:

FIREBASE WARNING: set at /users/(GoogleID) failed: permission_denied 2016-05-23 22:52:42.707 firebase.js:227 Uncaught (in promise) Error: PERMISSION_DENIED: Permission denied(…)

当我尝试查找此内容时,它谈到了 Firebase 的规则,这似乎是一种我尚未学过的语言(或者它只是超出了我的理解范围)。有人可以解释是什么导致了这个问题吗?我以为我要求它存储电子邮件和用户显示名称,而你只是不允许这样做,但当我把它们拿出来时,我仍然遇到同样的问题。有没有一种方法可以在不设定规则的情况下避免这种错误,或者规则是我可以在一天内自学如何编写的规则,还是我只是远远超出了我的范围?

感谢您的帮助!

最佳答案

默认情况下项目中的数据库在 Firebase Console仅可由管理用户读取/写入(例如在 Cloud Functions 或使用 Admin SDK 的进程中)。除非您更改服务器端安全规则,否则常规客户端 SDK 的用户无法访问数据库。

<小时/>

您可以更改规则,以便数据库只能由经过身份验证的用户读取/写入:

{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}

请参阅quickstart for the Firebase Database security rules .

但是由于您没有通过代码登录用户,因此数据库拒绝您访问数据。要解决此问题,您需要允许对数据库进行未经身份验证的访问,或者在访问数据库之前登录用户。

允许未经身份验证的访问您的数据库

目前最简单的解决方法(直到教程更新)是进入项目控制台中的“数据库”面板,选择“规则”选项卡并将内容替换为以下规则:

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

这使得知道数据库 URL 的任何人都可以读取和写入您的新数据库。 在投入生产之前,请务必再次保护您的数据库,否则有人可能会开始滥用它。

访问数据库之前先登录用户

要获得(稍微)更耗时但更安全的解决方案,请调用 Firebase AuthenticationsignIn... 方法之一确保用户在访问数据库之前已登录。最简单的方法是 using anonymous authentication :

firebase.auth().signInAnonymously().catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});

然后在检测到登录时附加您的监听器

firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
var isAnonymous = user.isAnonymous;
var uid = user.uid;
var userRef = app.dataInfo.child(app.users);

var useridRef = userRef.child(app.userid);

useridRef.set({
locations: "",
theme: "",
colorScheme: "",
food: ""
});

} else {
// User is signed out.
// ...
}
// ...
});

关于javascript - Firebase 权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58668959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com