Каковы риски использования телефонного номера в качестве идентификатора пользователя пользователя и как я могу эффективно запрашивать пользователей на основе их phoneNumber - PullRequest
1 голос
/ 13 марта 2020

Я работаю над мобильным приложением, в котором пользователи смогут входить в систему со своего телефона и приглашать других людей в группы, если у них есть номер телефона. Я установил следующее в Firestore.

enter image description here

enter image description here

enter image description here

Я планирую написать правила, позволяющие пользователям редактировать только свои документы. И они могут приглашать друг друга через приглашения, чтобы пользователь мог сам присоединиться к группе. И они смогут только искать пользователей, которые находятся в их телефоне по номеру.

Но я хотел бы знать, играю ли я здесь с огнем? Каковы риски использования номера телефона в качестве идентификатора документа? Я новичок в этом, и я хотел бы сохранить данные пользователя как можно безопаснее. Но я также не хочу иметь слишком много поисков / запросов для документов. Любые советы о том, как я могу улучшить свой дизайн?

1 Ответ

1 голос
/ 13 марта 2020

Каковы риски использования телефонного номера в качестве пользовательского идентификатора документа?

В этом нет ничего плохого, если пользователи не изменят свои телефонные номера. Но если они изменятся, у вас, вероятно, будут трудные времена с этим. Я говорю это, потому что нет способа «переименовать» идентификатор документа. Вы можете скопировать тот же документ и изменить идентификатор документа, но это подразумевает чтение нового документа, а также новую операцию записи.

Вместо этого вы можете использовать в качестве идентификатора документа uid из процесса аутентификации Firebase . Этот uid всегда будет одинаковым, независимо от того, какой номер телефона.

Я планирую написать правила, позволяющие пользователям редактировать только свои документы.

Этого можно добиться, даже если вы используете uid.


Редактировать:

o в качестве идентификатора документа «Я хочу сравнить телефонную книгу пользователей с коллекцией пользователей, чтобы найти пользователей с соответствующими номерами телефонов.

Вы, вероятно, изначально думали использовать:

db.collection("users").document(phoneNumber).get();

Но вы можно выполнить то же самое, используя запрос:

db.collection("users").whereEqualTo("phoneNumber", phoneNumber).get();

Будет ли это будет дорогостоящим запросом, если вы будете делать это таким образом?

Нет, вам будет предъявлено обвинение только в одном прочитанном документе.

И считается ли этот запрос чтением документа?

Да, это имеет значение. Обратите также внимание, что есть также стоимость одного прочитанного документа, даже если запрос не дает документов.

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