Firebase Auth Встроенная идентификация - PullRequest
0 голосов
/ 02 ноября 2019

Я создаю веб-платформу для связи учеников с преподавателями, используя Firebase Auth и Firestore. Я храню информацию о пользователях учащихся в коллекции Firestore, а информацию о наставниках - в другой. Я создаю функцию, которая может определить, является ли клиент учеником или тьютором при входе в систему.

Одно из решений, о котором я думал, - это запросить, в какой коллекции находится пользователь, используя UID. Хотя это потенциальное решение. Но это звучит так, как будто это требует много транзакций и может иметь длительный период времени, если коллекции становятся большими. Есть ли что-то еще, что я могу сделать для этого? Мне интересно, могу ли я использовать аутентификацию для создания встроенного удостоверения для каждого пользователя, чтобы различать «Tutor» и «Learner»? Таким образом, каждый раз, когда пользователь входит в систему, мы сразу узнаем личность?

Я знаю, что в декодированном токене аутентификации есть такая информация:

{ iss: 'https://securetoken.google.com/xxxx',
aud: 'xxxx',
auth_time: 1569886929,
user_id: 'aB03',
sub: 'aB03',
iat: 1570582588,
exp: 1570586188,
email: 'aa@gmail.com',
email_verified: false,
firebase:
{ identities: { email: [Array] }, sign_in_provider: 'password' },
uid: 'aa3' }

Могу ли я воспользоваться одним изэто построить то, что я хочу?

Действительно ценю ваше время и помощь.

1 Ответ

1 голос
/ 03 ноября 2019

Поскольку вы упоминаете "коллекцию", я предполагаю, что вы собираетесь использовать Firestore. В этом случае: размер коллекции не влияет на производительность запроса. Независимо от того, есть ли в коллекции 1000 пользовательских документов, 1 000 000 или даже 1 000 000 000, время, необходимое для запроса однопользовательского документа, всегда будет одинаковым.


Помимо этого, вы также можете хранитьтип пользователя в идентификационном токене (который вы указали в своем вопросе). Это называется «пользовательской заявкой», поскольку вы добавляете в информацию пользовательское свойство для своего приложения. Вы захотите сделать это из надежной среды (вашей машины разработки, сервера, которым вы управляете, или облачных функций), так как я предполагаю, что пользователи не смогут изменять свою собственную роль. См. Документацию по управлению доступом с помощью пользовательских утверждений для получения дополнительной информации по этому вопросу.

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