在 Firebase 数据库规则上创建自定义验证

2024-01-12

我想使用 firebase 实时数据库创建一个聊天应用程序,我已经拥有自己的服务器以及我自己的用户和收件人身份验证。

所以基本上我想做的是:

我希望我的服务器能够生成房间及其房间密钥,因此仅向我共享密钥的人可以访问房间,进行读写

也许流程是这样的 1. 服务器使用 REST API 创建一个 POST 到此 url

curl -X PUT \
https://example-chat-92682.firebaseio.com/order-test.json \ -d 
'{ 
   "UB8Hdazo834-4760": {
     "secret": "secret123"
   }
 }'

所以会生成如下结构

- order-test
    - UB8Hdazo834-4760
         secret: "secret123",

2.然后我就发聊天室https://example-chat-92682.firebaseio.com/order-test/UB8Hdazo834-4760.json https://example-chat-92682.firebaseio.com/order-test/UB8Hdazo834-4760.json对用户

我会像这样以 json 形式发送它们

"room": "https://example-chat-92682.firebaseio.com/order-test/UB8Hdazo834-4760.json",
"secret": "secret123"

3. 用户收到payload并使用它来使用他们的ios或android加入聊天,所以最终的结构将是这样的

- order-test
    - UB8Hdazo834-4760
         secret: "secret123",
         - chat
             - Kifeisufsu23r
                 name: "Bob",
                 message: "How you doin?"
             - Ki4324ffs3fIF
                 name: "Alex",
                 message: "I am fine"

问题是,如何制定 Firebase 数据库规则来创建读写验证? 我已经看过文档,我无法使用 Firebase 身份验证,因为我有自己的身份验证并且无法控制身份验证(不同的微服务)

秘密将自动生成,因此我无法对数据库规则进行硬编码

如果你们对我的数据结构有任何反馈,我非常欢迎


如果你有服务器,你可以为 Firebase 身份验证创建自定义令牌 https://firebase.google.com/docs/auth/admin/create-custom-tokens确保您的用户也在 Firebase 中得到识别。然后它们会表现为auth and auth.uid在 Firebase 数据库安全规则中。

但在您当前的模型中,我建议将秘密放入房间的钥匙中:

  • order-test
    • UB8Hdazo834-4760_secret123
      • chat
        • 基菲苏夫苏23r 姓名:“鲍勃”, 消息:“你好吗?”
        • Ki4324ffs3fIF 姓名:“亚历克斯”, 留言:“我很好”

现在,您可以轻松保护访问,以便只有知道房间 ID 和秘密的用户才能访问它:

{
  "rules": {
    ".write": false,
    "order-test": {
      "$roomIdAndSecret": {
        ".write": true
      }
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Firebase 数据库规则上创建自定义验证 的相关文章

随机推荐