Внедрить управление данными Firebase в интерфейсе по сравнению Серверная часть

# #javascript #node.js #firebase #google-cloud-firestore #firebase-authentication

Вопрос:

Я довольно новый разработчик JavaScript, выходец из области встроенных систем, т. Е. Базовые концепции алгоритмов и программирования для меня не являются проблемой, но некоторые концепции веб-разработки (фронт/бэкэнд) все еще новы для меня, и часто возникают многие сомнения.

Переходя непосредственно к моему вопросу, в настоящее время я разрабатываю базовое приложение HTML JS, в котором пользователь должен войти в систему, чтобы получить доступ к «частной» области; после входа в систему можно выполнять множество запросов на обслуживание и просматривать запросы других пользователей, являясь более или менее системой «интрасети».

Я использую Firebase Firestore в качестве базы данных и использую два подхода для взаимодействия с базой данных:

-Для управления аутентификацией пользователей (процессы входа и регистрации) я использую «интерфейсные» модули JS, предоставляемые Firebase, используя метод входа/пароля с активированной функцией подтверждения ссылки по электронной почте. После отправки запроса на аутентификацию приложение firebase возвращает токен, и на основе этого токена создается файл cookie сеанса, предоставляющий доступ к частной области. Таким образом, мне не нужно управлять большинством шагов проверки подлинности / учетной записи в моей внутренней части.

-Для любых других операций с базой данных (чтение и запись firestore) я использую SDK «firebase-admin» в сочетании с моей внутренней реализацией, таким образом, чтобы все запросы проверялись с помощью cookie сеанса перед фактическим выполнением. Серверная часть имеет доступ к «ключу» учетной записи службы JSON, который предоставляет ей полный доступ для чтения и записи ко всей базе данных.

Наконец, вопросы таковы:

-Является ли приемлемым или общепринятым использование обоих подходов, внешнего и внутреннего, для управления приложением firebase?

-После того, как все данные firestore управляются на внутренней стороне, и там управляются все правила чтения/записи/привилегий, правильно ли правильно устанавливать правила безопасности, чтобы блокировать все, как показано ниже? (учитывая, что firebase-администратор обходит все с внутренней стороны, не будучи затронутым)

 service cloud.firestore {  match /databases/{database}/documents {  match /{document=**} {  allow read, write: if false;  }  } }  

С наилучшими пожеланиями, и, пожалуйста, дайте мне знать, если я был ясен в своих сомнениях 🙂

Ответ №1:

Объединение внешнего и внутреннего кода при использовании Firestore (или других модулей Firebase) вполне нормально. Выполнение всего доступа к данным через SDK администратора (хотя это и не обязательно) также является полностью приемлемым подходом. Установка правил, запрещающих прямой доступ к SDK на стороне клиента (или с помощью маркеров идентификаторов через API REST), действительно является логичным шагом в этом сценарии.

Следует понимать, что теперь ваш код отвечает за то, чтобы все данные были авторизованы, в то время как в случаях, когда вы используете клиентские SDK Firebase, контроль доступа осуществляется правилами безопасности.

Комментарии:

1. Спасибо, Фрэнк! Я знаю, что этот вопрос может показаться действительно тривиальным, но вы знаете… сомнения начинающих :). На самом деле, этот подход является функциональным и хорошей возможностью для работы с интерфейсом и бэк-эндом в моем проекте. С наилучшими пожеланиями!