Правила в базе данных Firebase Realtime для операций CRUD в React

Я использую две службы Firebase: базу данных реального времени и аутентификацию в моем приложении React. Я использовал аутентификацию по электронной почте/паролю и базовую базу данных для приложения инвентаризации, состоящего из трех основных узлов: инвентарь, партии и незавершенные работы. В моем приложении реагирования я создал страницу входа, которая позволяет пользователям входить в систему через API аутентификации.

const handleSignIn = async (values) => {
    signInWithEmailAndPassword(
      auth,
      values.username,
      values.password
    )
      .then((userCredential) => {
        sessionStorage.setItem("user", values.username);
        sessionStorage.setItem(
          "login",
          true
        );

        const user = userCredential.user;

        history.push("/inv");
        setMsg(null);
      })
      .catch((error) => {
        setMsg("The Email or Password is Invalid");
        console.info(error);
      });
  };

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

Моя основная проблема заключается в том, что я хочу, чтобы данные внутри базы данных Realtime были доступны для чтения и записи только аутентифицированным пользователям, которые входят в систему через аутентификацию.

Правила базы данных реального времени:

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

Я перепробовал все, что есть в документации Firebase, но ничего не работает.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть ли какие-либо предложения (...) по определению статуса входа?

Рекомендуемый подход — «присоединить наблюдателя к глобальному объекту аутентификации», как описано в документации .

Я хочу, чтобы данные внутри базы данных Realtime были доступны только для чтения и доступны для записи аутентифицированным пользователям, которые входят в систему через аутентификация

Как вы увидите в документации вам необходимо связать правило с путем к базе данных реального времени.

Примеры из документации:

{
  "rules": {
    "foo": {  // <==== DB path
      ".read": true,
      ".write": false
    }
  }
}

или

{
  "rules": {
    "parent_node": {   // <==== DB path for parent
      "child_node": {  // <==== DB sub-path for child
        ".read": <condition>,
        ".write": <condition>,
        ".validate": <condition>,
      }
    }
  }
}

Другие вопросы по теме