Правила Firebase - Ограничить для конкретного пользователя или только если авторизован? - PullRequest
0 голосов
/ 13 июня 2019

Я прочитал всю документацию Google по этому вопросу, но она все еще не работает. Я устанавливаю правила Firebase и, когда я использовал следующее, нет проблем, я могу читать / писать соответственно, поскольку пользователь аутентифицирован:

{
  "rules": {
    "Users": { 
        ".write": "auth.uid != null",
        ".read": "auth.uid != null"
            },
     },
}

Однако, когда я использую следующее, я получаю отказано в разрешении:

{
  "rules": {
    "Users": { 
      "$uid":{
        ".write": "auth.uid ===  $uid",
        ".read": "auth.uid === $uid"
        },
     },
   },
}

Вот моя база данных:

Users
 -tnRYoVw1duUKV30VgtOxUTvb5kb2
   FirstName: "Mike"
   LastName: "Smith"
   myuser: "msmith"
 -saUXlTt5ioLNB33Iii9rHCdq4ov6
   FirstName: "John"
   LastName: "Heart"
   myuser: "jheart"

Вот запрос чтения от swift:

override func viewDidAppear(_ animated: Bool) {
    ref = Database.database().reference()
    ref?.child("Users").queryOrdered(byChild: "myuser").queryEqual(toValue: emailtextfield.text).observe(.value, with: { (snapShot) in
        if (snapShot.value! is NSNull) {
            print("nothing found")
        } else {
            let snapShotValue = snapShot.value as! [String:[String:Any]]
            Array(snapShotValue.values).forEach {
                let theFirstName = $0["FirstName"] as! String
                let theLastName = $0["LastName"] as! String
                self.firstName.text = theFirstName
                self.lastName.text = theLastName
            }
        }
    })
}

Благодарим вас за любую помощь в сообщении мне, где я ошибся.

1 Ответ

2 голосов
/ 13 июня 2019

Эти ключи непосредственно в разделе «Пользователи» не похожи на идентификаторы аутентификации Firebase Auth. Они похожи на push-идентификаторы базы данных в реальном времени. Если они не являются фактическими UID, то ваше правило не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...