Вопрос:

Как реализовать безопасность типа группы пользователей с помощью Firestore (например, общий список задач)?

firebase firebase-authentication firebase-security google-cloud-firestore

586 просмотра

1 ответ

14472 Репутация автора

Каков наилучший практический подход для реализации групп безопасности в Firestore для мобильных приложений (в данном случае реагирующий на род, который эффективно использует веб-интерфейсы). Чтобы дать более конкретный пример:

  • Пользователи, использующие мобильное приложение с возможностью «обмениваться» данными (например, списком задач), которые хранятся в Firestore [построено с использованием «веб-интерфейса»]
  • Стремитесь к очень низкому трению. Идеально начинается с того, что основной пользователь использовал приложение, используя подход «анонимной» аутентификации
  • Затем пользователь хочет «поделиться» данными (например, списком задач) с другими пользователями безопасно

Мой вопрос на самом деле, как вы реализуете вышеизложенное в целом, но охватывает такие аспекты, как

  • Q1 - С точки зрения подхода к пользовательскому опыту, что вы просите / заставляете пользователя делать здесь? Встраивать это в код приложения?
  • Q2 - Как вы структурируете базу данных Firestore, чтобы справиться с этим? то есть как будет выглядеть структура - возможно, все данные находятся под UID основного пользователя
  • Q3 - Как вы строите правила Firestore, чтобы защитить его? Например, как вы делаете здесь проверку типа «пользователь в группе»? пример?
  • Q4 - Как будет выглядеть код приложения:
    • создание группы безопасности пользователя, когда основной пользователь нажимает «поделиться»
    • добавление пользователей в группу?
    • доступ к данным?

В целом, стремятся понять самый низкий подход к обеспечению безопасности пользователя (в мобильном приложении с «web» sdk, например «оберткой-реагированием»), чтобы поделиться своими данными (например, списком задач) с другими людьми, которых он / она специально каким-то образом выбирает / одобряет.

Автор: Greg Источник Размещён: 08.11.2017 11:30

Ответы (1)


4 плюса

10589 Репутация автора

Решение

Что касается потомков, на этот вопрос ответили в группе google-cloud-firestore-обсуждения : https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/google-cloud-firestore-discuss/KEs4is11LXc/ xs2zIvQmCQAJ

TL; DR:

service cloud.firestore {
  match /databases/{database}/documents {
    match /lists/{listId} {
      // step 1
      allow create: if request.resource.data.owner == request.auth.uid;
      // step 3
      allow get: if exists(/databases/$(database)/documents/lists/$(listId)/users/$(request.auth.uid));
      match /users/{userId} {
        // step 2
        allow create: if request.auth.uid == get(/databases/$(database)/documents/lists/$(listId)).data.owner;
      }
    }
  }
}
Автор: Mike McDonald Размещён: 21.11.2017 04:19
Вопросы из категории :
32x32