如何允许现有用户仅编辑其数据? (Firebase安全规则)

时间:2019-04-23 03:02:40

标签: firebase firebase-realtime-database firebase-authentication firebase-security-rules

我正在编写一个RSVP应用程序,用户可以进入该站点并输入其姓名。我想,如果他们的姓名与数据库中的记录匹配,则可以授予他们编辑其参加字段的权限。在这种情况下,我对安全性了解不多。

我在firebase文档中找不到所需的内容。我通常会看到通过用户名和密码进行的身份验证可以完全读写,而我并不想这样做。

{
  "rules": {
    ".read": (if user name matches a record),
    ".write": (if user name matches a record, only can edit)
  }
}

我不确定在授予用户“写”访问权限时如何对用户进行身份验证,以将其限制为只能编辑数据。我不希望任何恶意用户删除我的数据库。

1 个答案:

答案 0 :(得分:1)

只需匹配路径中的用户名,并设置写入字段以匹配名称:

match /users/{username}{
    allow read: if request.auth.username != null
    allow write: if request.auth.username == username
}

您将应用程序设置为无需登录即可工作,并将输入的用户名用作身份验证对象auth = { username: "" }的用户名字段值。 Firebase会将通过路径/users/{username}提供的用户名与请求的用户名进行匹配,并相应地允许读/写访问。