Firebase实时数据库规则拒绝权限

太平洋

我有一个正在Kotlin中构建的应用程序,后端是Node.js。我允许用户使用客户端应用程序上的Firebase身份验证登录/注册。

该应用程序功能的一部分是让用户通过Firebase的实时数据库在线保存数据。在应用程序内部发生的情况是,一旦用户登录,我就将其uid传递给后端,后端向数据库发出请求。

当数据库规则允许所有人读写时,一切工作都很好。一旦我将它们更改为此:

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

}

我一直在被拒绝权限。

我尝试了规则的不同变体:

  • 没有用户密钥
  • 仅检查auth不为null

但似乎没有任何作用。

我缺少一些步骤吗?

我已经梳理了许多类似的StackOverflow问题和Firebase的实时数据库文档,但没有找到解决我问题的答案。

一些代码供参考:

后端:

app.get('/someRoute', function (req, res) {
var database = firebase.database()
var uid = req.query.uid

database.ref('/users/' + uid).once('value')
.then(function(snapshot) {
  var data = snapshot.val() ? snapshot.val() : []
  res.status(200).send({ response: data})
}).catch(function(error) {
  console.log(error)
  res.status(500).json({ error: error})
  })
})

客户:

fun loginUser(view : View) {
    FirebaseAuth.getInstance().signInWithEmailAndPassword(userEmail, userPassword)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                updateFirebaseUserDisplayName()
            } else {
                Toast.makeText(this, "An error has occurred during login. Please try again later.", Toast.LENGTH_SHORT).show()
            }
        }
}

fun updateFirebaseUserDisplayName() {

    FirebaseAuth.getInstance().currentUser?.apply {
        val profileUpdates : UserProfileChangeRequest = UserProfileChangeRequest.Builder().setDisplayName(userEmail).build()
        updateProfile(profileUpdates)?.addOnCompleteListener(OnCompleteListener {
            when(it.isSuccessful) {
                true -> apply {
                    Intent(this@LoginActivity, MainActivity::class.java).apply {
                        startActivity(this)
                        finish()
                    }
                }
                false -> Toast.makeText(this@LoginActivity, "Login has failed", Toast.LENGTH_SHORT).show()
            }
        })
    }
}
太平洋

经过一番搜索,我找到了解决问题的方法。

看来,因为我正在对客户端上的用户进行身份验证,并且后端与Firebase的实时数据库进行通信,所以必须在后端使用Firebase的Admin SDK

这是因为需要传递每次用户登录并在客户端中进行身份验证时生成的唯一令牌。然后需要将该令牌发送到后端,并在尝试访问实时数据库时使用。

对于任何会偶然发现此问题并想知道如何解决的人,请访问以下链接:

另外,请确保正确引用您的数据库名称

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Firebase实时数据库-规则

来自分类Dev

创建/更新/删除 Firebase 实时数据库规则

来自分类Dev

Firebase 实时数据库规则。获取 url 中没有 @uid 的规则

来自分类Dev

Firebase实时数据库addValueEventListener

来自分类Dev

Firebase实时数据库addValueEventListener

来自分类Dev

Android:Firebase实时数据库

来自分类Dev

Firebase 实时数据库的问题

来自分类Dev

Firebase 实时数据库帖子

来自分类Dev

Firebase实时数据库规则模拟器中的空数据

来自分类Dev

当Firebase实时数据库拒绝访问时,如何显示错误?

来自分类Dev

在Firebase实时数据库中添加“ .indexOn”规则的正确方法是什么?

来自分类Dev

我的Firebase实时数据库安全规则出现问题

来自分类Dev

Firebase实时数据库规则在前端不起作用

来自分类Dev

Firebase实时数据库验证规则不起作用

来自分类Dev

在终端中进行Firebase部署后,如何获取实时数据库规则?

来自分类Dev

Firebase实时数据库规则不适用于新用户

来自分类Dev

用于阻止创建/删除的Firebase实时数据库安全规则

来自分类Dev

实时数据库规则语言中的Firebase速率限制

来自分类Dev

Firebase 实时数据库中需要安全规则吗?

来自分类Dev

Firebase 实时数据库规则不起作用

来自分类Dev

如何让 Firebase 实时数据库的安全规则读取 cookie?

来自分类Dev

您可以控制 firebase 实时数据库安全规则中的各个属性吗?

来自分类Dev

仅在 firebase 实时数据库中的一个节点上禁用读取规则

来自分类Dev

Firebase实时数据库中的不同目录访问权限,以实现dialogflow

来自分类Dev

Firebase数据库Swift的权限被拒绝

来自分类Dev

Firebase 数据库:读取权限被拒绝?

来自分类Dev

Firebase 数据库权限被拒绝错误

来自分类Dev

Firebase数据库规则:用户权限

来自分类Dev

实时数据库

Related 相关文章

  1. 1

    Firebase实时数据库-规则

  2. 2

    创建/更新/删除 Firebase 实时数据库规则

  3. 3

    Firebase 实时数据库规则。获取 url 中没有 @uid 的规则

  4. 4

    Firebase实时数据库addValueEventListener

  5. 5

    Firebase实时数据库addValueEventListener

  6. 6

    Android:Firebase实时数据库

  7. 7

    Firebase 实时数据库的问题

  8. 8

    Firebase 实时数据库帖子

  9. 9

    Firebase实时数据库规则模拟器中的空数据

  10. 10

    当Firebase实时数据库拒绝访问时,如何显示错误?

  11. 11

    在Firebase实时数据库中添加“ .indexOn”规则的正确方法是什么?

  12. 12

    我的Firebase实时数据库安全规则出现问题

  13. 13

    Firebase实时数据库规则在前端不起作用

  14. 14

    Firebase实时数据库验证规则不起作用

  15. 15

    在终端中进行Firebase部署后,如何获取实时数据库规则?

  16. 16

    Firebase实时数据库规则不适用于新用户

  17. 17

    用于阻止创建/删除的Firebase实时数据库安全规则

  18. 18

    实时数据库规则语言中的Firebase速率限制

  19. 19

    Firebase 实时数据库中需要安全规则吗?

  20. 20

    Firebase 实时数据库规则不起作用

  21. 21

    如何让 Firebase 实时数据库的安全规则读取 cookie?

  22. 22

    您可以控制 firebase 实时数据库安全规则中的各个属性吗?

  23. 23

    仅在 firebase 实时数据库中的一个节点上禁用读取规则

  24. 24

    Firebase实时数据库中的不同目录访问权限,以实现dialogflow

  25. 25

    Firebase数据库Swift的权限被拒绝

  26. 26

    Firebase 数据库:读取权限被拒绝?

  27. 27

    Firebase 数据库权限被拒绝错误

  28. 28

    Firebase数据库规则:用户权限

  29. 29

    实时数据库

热门标签

归档