Firebase Auth знак различия - PullRequest
0 голосов
/ 23 марта 2020

На моем сайте у меня есть два портала для входа в систему. Портал А является логином для учащихся. Портал B является логином для учителей.

Учетные записи учеников и учителей расположены в одном проекте Firebase, другими словами, учетные записи обоих типов находятся в одном и том же пространстве аутентификации. Оба портала используют один и тот же простой код входа в систему:
firebase.auth().signInWithEmailAndPassword(user_email, user_password).catch(function(error) {})

В настоящее время учащиеся могут входить в систему на обоих порталах и одинаково для учителей. Я пытаюсь запретить учителям входить в портал учеников и наоборот. Я не уверен, как это реализовать. Я сделал setCustomUserClaim для идентификации двух типов учетных записей на маркере аутентификации. Но я могу получить токен авторизации только после того, как пользователь вошел в систему, но не раньше, чем я думаю. Также у меня есть коллекция Firestore, в которой хранится вся информация о пользователях, включая их личность. Но каждому документу пользователя присваивается соответствующий UID. Последние могут быть захвачены после входа в систему. Есть идеи, как это реализовать?

1 Ответ

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

Аутентификация Firebase не имеет встроенного способа различать guish между этими двумя типами пользователей. Он просто проверяет подлинность учетных данных, введенных пользователем, и обеспечивает их правильность. Если определенные пользователи могут получить доступ только к определенному приложению или определенным данным, эта информация должна поступить от вас.

Важно понять, что изложено выше, поэтому я повторю это: Аутентификация Firebase позволяет всем пользователям аутентифицируйте, пока они предоставляют правильные учетные данные. Он не может блокировать доступ к аутентификации на основе информации c, указанной в приложении, например, вашего типа пользователя. Этот тип авторизации logi c является частью вашего приложения, как в коде, так и (если вы используете базу данных Firebase) ваших правил безопасности на стороне сервера.

Распространенный способ Реализация вашего сценария заключается в добавлении информации о типах пользователей в базу данных (например, в базу данных Firebase Realtime или Cloud Firestore). В этих данных вы можете, например, хранить адреса электронной почты всех учителей.

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

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