правила firebase, создайте пользователя PERMISSION_DENIED: в доступе отказано - PullRequest
1 голос
/ 04 мая 2020

Я получаю PERMISSION_DENIED: В доступе отказано при попытке создать пользователя:

{
 "rules": {

   ".read": true,
   ".write": "auth != null",

    "users": {
    "$uid": {
        ".read": true,
        ".write": "auth.uid == $uid",
        ".validate": "
            newData.child('user').isString() &&
            newData.child('user').val().length > 3
        "
    }
 }

 }
}

user - строка, содержит более 3 букв. Но я думаю, что это как-то связано с идентификатором.

Я создаю пользователя с createUserWithEmailAndPassword и пытаюсь вставить его в базу данных:

firebase.database().ref('users/' + userID).set({
    username: username,
    email: email
});

ИД пользователя - это идентификатор createUserWithEmailAndPassword возвращает ...

Есть идеи, что не так?

1 Ответ

1 голос
/ 04 мая 2020

Ваша проблема связана с частью .validate: с вашими правилами вам нужно написать узел следующим образом

firebase.database().ref('users/' + userID).set({
    user: username,   // <-- see here we have a user sub-node
    email: email
});

Или вам нужно изменить свои правила следующим образом:

{
 "rules": {

   ".read": true,
   ".write": "auth != null",

    "users": {
    "$uid": {
        ".read": true,
        ".write": "auth.uid == $uid",
        ".validate": "
            newData.child('username').isString() &&
            newData.child('username').val().length > 3
        "
    }
 }

 }
}
...