在 Firebase 数据库规则上创建自定义验证
Create custom validation on Firebase Database Rules
我想使用 firebase 实时数据库创建一个聊天应用程序,我已经拥有自己的服务器以及我自己的用户和接收者身份验证。
基本上我想做的是:
我希望我的服务器能够生成房间及其房间密钥,所以只有我共享密钥的人才能访问房间,进行读写
大概流程是这样的
1.服务器使用REST API为此url
创建一个POST
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发给用户
我会像这样在 json 中发送它们
"room": "https://example-chat-92682.firebaseio.com/order-test/UB8Hdazo834-4760.json",
"secret": "secret123"
3。用户收到有效载荷并使用它使用他们的 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 身份验证,因为我有自己的身份验证并且无法控制身份验证(不同的微服务)
秘密将自动生成,因此我无法对数据库规则进行硬编码
如果你们对我的数据结构有任何反馈,我非常欢迎
如果您有服务器,您可以mint a custom token for Firebase Authentication确保您的用户也在 Firebase 中得到识别。然后,它们将在 Firebase 数据库安全规则中显示为 auth
和 auth.uid
。
但在您当前的模型中,我建议将秘密放入房间的钥匙中:
- 订单测试
- UB8Hdazo834-4760_secret123
- 聊天
- Kifeisufsu23r
姓名:"Bob",
消息:"How you doin?"
- Ki4324ffs3fIF
姓名:"Alex",
消息:"I am fine"
现在您可以轻松保护访问权限,以便只有知道房间 ID 和密码的用户才能访问它:
{
"rules": {
".write": false,
"order-test": {
"$roomIdAndSecret": {
".write": true
}
}
}
}
我想使用 firebase 实时数据库创建一个聊天应用程序,我已经拥有自己的服务器以及我自己的用户和接收者身份验证。
基本上我想做的是:
我希望我的服务器能够生成房间及其房间密钥,所以只有我共享密钥的人才能访问房间,进行读写
大概流程是这样的 1.服务器使用REST API为此url
创建一个POSTcurl -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发给用户
我会像这样在 json 中发送它们
"room": "https://example-chat-92682.firebaseio.com/order-test/UB8Hdazo834-4760.json",
"secret": "secret123"
3。用户收到有效载荷并使用它使用他们的 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 身份验证,因为我有自己的身份验证并且无法控制身份验证(不同的微服务)
秘密将自动生成,因此我无法对数据库规则进行硬编码
如果你们对我的数据结构有任何反馈,我非常欢迎
如果您有服务器,您可以mint a custom token for Firebase Authentication确保您的用户也在 Firebase 中得到识别。然后,它们将在 Firebase 数据库安全规则中显示为 auth
和 auth.uid
。
但在您当前的模型中,我建议将秘密放入房间的钥匙中:
- 订单测试
- UB8Hdazo834-4760_secret123
- 聊天
- Kifeisufsu23r 姓名:"Bob", 消息:"How you doin?"
- Ki4324ffs3fIF 姓名:"Alex", 消息:"I am fine"
- 聊天
- UB8Hdazo834-4760_secret123
现在您可以轻松保护访问权限,以便只有知道房间 ID 和密码的用户才能访问它:
{
"rules": {
".write": false,
"order-test": {
"$roomIdAndSecret": {
".write": true
}
}
}
}