У меня уже есть и приложение, которое разработано Ioni c - Angular и у меня есть REST API, которое разработано Nodejs и Mongodb. Услышав о Firebase, я решил перестроить его таким образом.
В моем старом приложении я использовал одну БД для всех клиентов и разделял их и их данные, которые они могут читать и записывать идентификатор группы .
Я сохраняю их идентификатор группы в своем токене jwt и отправляю его в заголовке запроса бэкенду. В бэкэнде я получу этот groupId и отфильтрую запрошенные данные по этому groupId, или когда они публикуют или помещают данные, я также проверяю и использую этот groupId. В этом случае они могут просто просматривать или изменять данные своей группы. Также я отправляю сообщение Socket.io этой указанной c группе для обновления своих данных и получения данных в реальном времени.
Мои вопросы о новом приложении (Firebase):
Безопасно ли устанавливать и получать данные по group_id, который я получаю из пользовательского токена на стороне клиента Firestore? (Я не люблю использовать API, потому что у меня больше нет данных в реальном времени). Может ли пользователь изменить идентификатор_группы и получить данные других групп?
Firebase уведомляет всех пользователей об изменениях и обновляет sh их данные для получения обновлений, и они в режиме реального времени данные. В моем случае мне нужно обновить данные указанной группы c, в которой изменяются ее данные. Можно ли это сделать или все пользователи во всех группах всегда обновляют sh свои данные, когда происходят изменения в БД?
РЕДАКТИРОВАНИЕ:
Вот пример кода. Мне нужно знать, может ли злонамеренный пользователь изменить значение, которое я отправляю в «где». Если да, то как я могу обезопасить себя, используя правила Firebase для чтения данных?
loadAllUnits(): Observable<Unit[]> {
return this.db.collection(
'units',
ref => ref.orderBy("name")
.where('groupId', '==', this.authService.currentUser.value.groupId)
)
.snapshotChanges()
.pipe(
map(snaps => convertSnaps<Unit>(snaps)));
}