#firebase #firebase-authentication
# #firebase #firebase-аутентификация
Вопрос:
Я нахожусь в процессе добавления firebase email / пароля для входа в приложение React. В частности, это сайт электронной коммерции, и пользователи будут входить в систему анонимно, прежде чем они создадут учетную запись (для таких вещей, как данные корзины).
Вот идеальный пользовательский поток:
- Пользователь регистрируется, предоставляя адрес электронной почты и пароль
- Пользователь не входит в систему немедленно и вместо этого получает электронное письмо с подтверждением
- Если пользователь попытается выполнить вход до проверки своей электронной почты, он не сможет выполнить вход
- Затем пользователь нажимает на ссылку подтверждения и может войти в систему
У меня возникли проблемы с # 3, потому что похоже, что единственный способ проверить, проверено ли электронное письмо, — это позвонить:
const { user } = await firebase
.auth()
.signInWithEmailAndPassword(email, password)
if (user?.emailVerified) //let them enter the dashboard
Однако этот процесс регистрирует пользователя, даже если электронная почта не проверена. Это уничтожает данные в анонимной учетной записи. И объединение двух учетных записей невозможно, потому что пользователь думает, что они не вошли в систему (следовательно, это может вызвать проблемы с UX, если учетные записи уже объединены).
Есть идеи?
Ответ №1:
Если вы используете поставщика электронной почты пароля, невозможно запретить пользователю входить в систему без подтвержденного адреса электронной почты. Вы, конечно, можете запретить им использовать ваше приложение и получать доступ к данным, но вы не можете запретить им входить в систему.
Если вы хотите убедиться, что пользователь может войти в систему только после подтверждения своего адреса электронной почты, рассмотрите возможность использования поставщика ссылок на электронную почту. Затем вы можете позже разрешить им устанавливать пароль для той же учетной записи либо через Admin SDK, либо создав учетную запись email password и связав ее с учетной записью email link. Также ознакомьтесь с документацией о различии электронной почты / пароля от ссылки на электронную почту для некоторых нюансов здесь.