Надежно ли использовать адрес электронной почты в качестве первичного ключа / идентификатора пользователя в базе данных Firebase Realtime? - PullRequest
0 голосов
/ 29 марта 2019

База данных реального времени Firebase имеет ограничения набора символов, которые не позволяют этим символам

. (period)
$ (dollar sign)
[ (left square bracket)
] (right square bracket)
# (hash or pound sign)
/ (forward slash)

присутствовать в первичном ключе.

Но эта библиотека для реального времени Firebaseбаза данных в скрипте приложений Google использует экранированный адрес электронной почты как auth.uid

Поэтому я структурировал свою БД реального времени FB как ниже:

{  
   users={  
      auth.uid={  //auth.uid == escaped email
         phone_no=+123456789012,
         email=foo@bar.com
      },
      ... //rest of the array
   }
}

Меня беспокоит то, что два разных пользователя могут иметь один и тот же экранированный адрес электронной почты.

Например:

User1 email:johndoe@foobar.com

User1 сбежал электронная почта: johndoefoobarcom

User2 email: johndo.e@foobar.com

User2 сбежал электронная почта: johndoefoobarcom

Позволяют ли почтовые службы, особенно Gmail, пользователям регистрировать электронные письма, похожие на показанные выше?

Вот как выглядят мои правила

{
  "rules": {
    "users": {
      "$user_id": {
        ".write": "$user_id === auth.uid",
        ".read": "$user_id === auth.uid"
      }
    }
  }
}

Итак, вы можете понять, почему я используюэлектронная почта (auth.uid) как rootkey (потому что auth.uid ужеон избежал адреса электронной почты)

Вот код скрипта Apps -> https://codepen.io/edge-developer/pen/JVPNOY

1 Ответ

3 голосов
/ 29 марта 2019

Вы используете очень старую версию firebase, вам нужно обновить ее до firebase js 5.8.5.

Также нет лучше использовать полученный вами userId, если вы аутентифицируете конкретного пользователя.Основная причина использования uid заключается в том, что он уникален для каждого пользователя.

Проверьте здесь:

Зачем использовать UID в Firebase?Должен ли я использовать его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...