【发布时间】:2021-07-31 21:36:30
【问题描述】:
我启动了我的第一个开放存储库项目EphChat,人们立即开始向它发出大量请求。
Firebase 是否有办法在安全规则中对请求进行速率限制?我认为有一种方法可以使用请求的时间和先前写入的数据的时间来完成,但在文档中找不到任何关于我将如何执行此操作的内容。
目前的安全规则如下。
{
"rules": {
"rooms": {
"$RoomId": {
"connections": {
".read": true,
".write": "auth.username == newData.child('FBUserId').val()"
},
"messages": {
"$any": {
".write": "!newData.exists() || root.child('rooms').child(newData.child('RoomId').val()).child('connections').hasChild(newData.child('FBUserId').val())",
".validate": "newData.hasChildren(['RoomId','FBUserId','userName','userId','message']) && newData.child('message').val().length >= 1",
".read": "root.child('rooms').child(data.child('RoomId').val()).child('connections').hasChild(data.child('FBUserId').val())"
}
},
"poll": {
".write": "auth.username == newData.child('FBUserId').val()",
".read": true
}
}
}
}
}
我想对整个 Rooms 对象对数据库的写入(和读取?)进行速率限制,因此每秒只能发出 1 个请求(例如)。
【问题讨论】:
标签: firebase firebase-realtime-database firebase-security rate-limiting