Если вы хотите защитить доступ к данным пользователя, но не хотите, чтобы пользователь предоставлял учетные данные, вам нужна анонимная аутентификация Firebase . С помощью анонимной аутентификации вы регистрируете пользователя с помощью этого простого вызова:
FirebaseAuth.getInstance().signInAnonymously();
С этого момента у пользователя есть UID, который идентифицирует его, и вы можете использовать этот UID в данных, чтобы связать данные с этим пользователя, а затем в правилах безопасности, чтобы обеспечить только авторизованный доступ, как показано в документации по безопасности на основе пользователя .
Если вы настаиваете на создании собственных идентификаторов, вы можете убедитесь, что только тот, кто знает идентификатор, может написать документ с таким идентификатором с:
{
"rules": {
".read": false,
"$DID": {
// anyone who knows a DID can read its contents
".read": true,
// anyone who knows a DID can write its contents, as long as they specify the DID in the contents too
".write": "newData.child('DID').val() === $DID"
}
}
}
Таким образом, пользователь должен указать один и тот же идентификатор как в свойстве DID
, так и в пути, чтобы это было разрешено написать. Поскольку у root нет разрешения на чтение, у кого-то нет возможности получить список всех данных (и, следовательно, всех DID).