Как разрешить существующим пользователям редактировать только свои данные? (Правила безопасности Firebase)

#firebase #firebase-realtime-database #firebase-authentication #firebase-security

#firebase #firebase-realtime-database #firebase-аутентификация #firebase-безопасность

Вопрос:

Я пишу приложение RSVP, в котором пользователь попадает на сайт и просто вводит свое имя. Я хочу, чтобы, если их имя соответствует записи в базе данных, им предоставлялся доступ к редактированию их поля посещения. Я мало что знаю о безопасности в этом случае.

Я не могу найти то, что я ищу в документах firebase. В основном я вижу аутентификацию по имени пользователя и паролю, предоставляющую полный доступ на чтение и запись, чего я не пытаюсь делать.

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

Я не уверен, как аутентифицировать своих пользователей, предоставляя им доступ «на запись», чтобы ограничить это только возможностью редактировать данные. Я не хочу, чтобы какой-либо злоумышленник удалял мою базу данных.

Ответ №1:

Просто сопоставьте имя пользователя с path и установите поле записи в соответствии с именем:

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

Вы настраиваете свое приложение для работы без какого-либо входа и принимаете имя пользователя, введенное в качестве значения поля username объекта auth auth = { username: "" } . Firebase сопоставит имя пользователя, указанное по пути /users/{username} , с запрошенным именем пользователя и соответственно разрешит доступ на чтение / запись.