Аутентификация имени пользователя вместо электронной почты
С Firebase я могу зарегистрироваться и войти в систему, используя адреса электронной почты. Однако что, если я хочу, чтобы приложение было основано на имени пользователя. Например, вы должны войти в систему с "Bobzilla" вместо "[email protected]"?
Возможно ли это с Firebase?
Ответы
Ответ 1
Простой: вы можете добавить любой домен за именем пользователя. Итак, как только вы определили имя пользователя, зарегистрируйте своего пользователя с <username>@vikzillasapp.com
.
Обратите внимание, что это не позволит пользователю сбросить свой пароль, если они его забудут, поскольку Firebase использует адрес электронной почты для отправки электронной почты с восстановлением пароля.
Если это не соответствует вашим потребностям, вы можете свернуть собственный поставщик удостоверений, используя инструкции в документации Firebase. Для этого требуется код, который работает в надежной среде, для которой вы можете использовать свой собственный сервер или облачные функции для Firebase. В настоящее время есть пример этого в repo-функции-samples.
Ответ 2
Вместо того, чтобы использовать метод, в котором вы назначаете адрес электронной почты для пользователя, может оказаться лучшим вариантом найти адрес электронной почты в вашей базе данных.
Примером может служить:
- Подскажите имя пользователя для входа с именем пользователя и паролем
- Проверьте, что имя пользователя существует в вашей базе данных и получает соответствующий адрес электронной почты для этой учетной записи.
- Полностью передать этот адрес электронной почты в процесс входа в систему
Ответ 3
Вы можете использовать настраиваемый auth. Пользовательский auth - это метод, с помощью которого пользователь может войти в приложение с помощью пользовательского токена.
Но вам нужен внутренний код, чтобы создать пользовательский токен, когда пользователь отправляет имя пользователя и пароль на этот бэкэнд.
К счастью, теперь есть облачная функция firebase с событием http, которая может легко решить вашу проблему. Шаг:
-
Пользователь отправляет имя пользователя и пароль в URL-адрес облачной функции через параметры запроса (GET) или тело запроса (POST)
-
Cloud funtion будет проверять правильность имени пользователя и пароля (например: из базы данных реального времени)
-
Если имя пользователя и пароль действительны, функция облака создаст пользовательский токен, используя userId (вам нужно сохранить userId). Затем отправьте его в тело ответа
-
Затем клиент может войти в систему с помощью этого customToken