Ограничить доступ к базе данных Firebase с неработающим auth.uid - PullRequest
0 голосов
/ 22 сентября 2018

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

Я всегда получаю ошибку 401 (без слов) в моей консоли.

Я пробовал два способа проверки, вошел ли в систему нужный пользователь или нет, но ни один из них не помог мне:

1.uid жестко прописан в правилах:

{
"rules": {
  ".read": true,
  ".write": "auth.uid === 'UID'")",
    }
}

2.uid в базе данных

{
"rules": {
  ".read": true,
  ".write": "root.child('users').hasChild(auth.uid)",
    }
}

В обоих случаях я использовал uid, представленный в обзоре Firebase-Authentication.Я использую Google в качестве провайдера входа.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Все примеры кода верны

Все фрагменты кода, в вопросе и ответе работы Мохсена.Я просто забыл отправить idToken с моим запросом патча.

Код для получения idToken:

firebase.auth().currentUser.getIdToken(/* forceRefresh */ true).then(function(idToken) {
  // Send token to your backend via HTTPS
  // ...
}).catch(function(error) {
  // Handle error
});

из: https://firebase.google.com/docs/auth/admin/verify-id-tokens#retrieve_id_tokens_on_clients

Аутентификация с помощью idToken:

https://<DATABASE_NAME>.firebaseio.com/users/ada/name.json?auth=<ID_TOKEN>

из: https://firebase.google.com/docs/database/rest/auth

0 голосов
/ 22 сентября 2018

Из документации :

Вот пример правила, которое предоставляет авторизованным пользователям доступ на запись к /users/<uid>/, где <uid> - это идентификатор пользователя, полученный с помощью Аутентификации Firebase.


Редактировать:

Для определенного пути и полученного токапользователю через Firebase Authentication, это должно помочь:

{
  "rules": {
    "YourSpecificPath": {

     "$uid": { // where <uid> is the ID of the user obtained through Firebase Authentication
        ".write": "$uid === auth.uid"    
        ".read": true,

      }
    }
  }
}

Или дать uid напрямую:

{
  "rules": {
    ".read": true,
    ".write": "auth.uid === 'dJrGShfgfd2'"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...