首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从应用程序注销时的DatabaseError

从应用程序注销时的DatabaseError
EN

Stack Overflow用户
提问于 2020-12-16 10:19:26
回答 1查看 25关注 0票数 0

我正在做一个包含传感器数据和实时数据库数据到应用程序中的项目。我的应用程序每次更新时都会使用StreamBuilder从传感器接收数据。一切正常,我可以从我的数据库中获取、更新、添加和删除数据,我可以成功登录和注册。但我在注销应用程序时遇到了问题。每次注销时,我都会收到以下错误:

代码语言:javascript
运行
复制
Exception has occurred.
DatabaseError (DatabaseError(1, com.firebase, Permission Denied))

这个错误来自这个函数,来自"await for":

代码语言:javascript
运行
复制
// Função para ler o valor da temperatura
  Stream<int> getSensorTemperature() async* {
    final FirebaseUser user = await _auth.currentUser();

    await for(var event in databaseReference.child(user.uid+"/temperature").onValue) {
      yield event.snapshot.value;
    }
  }

我在这个函数下有一个类似的函数,但没有显示任何错误:

代码语言:javascript
运行
复制
Stream<int> getSensorHumidity() async* {
    final FirebaseUser user = await _auth.currentUser();

    await for(var event in databaseReference.child(user.uid+"/humidity").onValue) {
      yield event.snapshot.value;
    }
  }

这是我的Firebase规则:

代码语言:javascript
运行
复制
{
  "rules": {
    ".read": "auth != null",
    ".write":"auth != null"
  }
}

此错误仅在注销时发生,我知道这与我的安全规则有关,但我的应用程序在每次注销时都会崩溃,我如何删除此错误?

EN

回答 1

Stack Overflow用户

发布于 2020-12-16 10:45:25

您的规则目前要求用户必须在您的应用程序读取或写入数据库中的任何位置时登录。这就是为什么你会得到一个错误。

你有两个选择。将规则更改为即使没有用户登录也允许权限,或者将代码的逻辑更改为只有在有用户登录时才进行读写。

我建议你选择后者,因为在不需要登录的情况下让你的数据库对写操作开放可能会导致你的应用程序出现安全问题。

您可以在documentation中阅读有关安全规则的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65316392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档