Вы можете использовать Firebase Authentication чтобы позволить вашим пользователям аутентифицироваться в Firebase, используя их адреса электронной почты и пароли, а также управлять учетными записями вашего приложения на основе паролей.
Прежде чем начать
- Добавьте Firebase в свой проект JavaScript .
- Если вы еще не подключили свое приложение к проекту Firebase, сделайте это из консоли Firebase .
- Включить вход по электронной почте/паролю:
- В консоли Firebase откройте раздел Auth .
- На вкладке «Метод входа » включите метод входа по электронной почте и паролю и нажмите «Сохранить» .
Создайте учетную запись на основе пароля
Чтобы создать новую учетную запись пользователя с паролем, выполните следующие шаги на странице регистрации вашего приложения:
- Когда новый пользователь регистрируется с помощью формы регистрации вашего приложения, выполните все шаги проверки новой учетной записи, которые требуются вашему приложению, например проверьте, что пароль новой учетной записи был введен правильно и соответствует вашим требованиям сложности.
- Создайте новую учетную запись, передав адрес электронной почты и пароль нового пользователя в
createUserWithEmailAndPassword
:Если была создана новая учетная запись, пользователь входит в систему автоматически. Ознакомьтесь с разделом «Дальнейшие шаги» ниже, чтобы получить данные вошедшего в систему пользователя.Web
import { getAuth, createUserWithEmailAndPassword } from "firebase/auth"; const auth = getAuth(); createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Signed up const user = userCredential.user; // ... }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // .. });
Web
firebase.auth().createUserWithEmailAndPassword(email, password) .then((userCredential) => { // Signed in var user = userCredential.user; // ... }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // .. });
Здесь также можно ловить и обрабатывать ошибки. Список кодов ошибок можно найти в справочной документации по аутентификации .
Войдите в систему с помощью адреса электронной почты и пароля.
Действия по входу пользователя с паролем аналогичны действиям по созданию новой учетной записи. На странице входа в приложение выполните следующие действия:
- Когда пользователь входит в ваше приложение, передайте адрес электронной почты и пароль пользователя в команду
signInWithEmailAndPassword
:Ознакомьтесь с разделом «Дальнейшие шаги» ниже, чтобы получить данные вошедшего в систему пользователя.Web
import { getAuth, signInWithEmailAndPassword } from "firebase/auth"; const auth = getAuth(); signInWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Signed in const user = userCredential.user; // ... }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; });
Web
firebase.auth().signInWithEmailAndPassword(email, password) .then((userCredential) => { // Signed in var user = userCredential.user; // ... }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; });
Здесь также можно ловить и обрабатывать ошибки. Список кодов ошибок можно найти в справочной документации по аутентификации .
Рекомендуется: установите политику паролей.
Вы можете повысить безопасность учетной записи, обеспечив соблюдение требований к сложности пароля.
Чтобы настроить политику паролей для вашего проекта, откройте вкладку «Политика паролей» на странице «Настройки аутентификации» консоли Firebase :
Политики паролей Firebase Authentication поддерживают следующие требования к паролям:
Требуется символ нижнего регистра
Требуется символ верхнего регистра
Требуется цифровой символ
Требуется небуквенно-цифровой символ
Следующие символы удовлетворяют требованию, не являющемуся буквенно-цифровым:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~
Минимальная длина пароля (от 6 до 30 символов; по умолчанию — 6).
Максимальная длина пароля (максимальная длина 4096 символов)
Вы можете включить принудительное применение политики паролей в двух режимах:
Требовать : попытки зарегистрироваться терпят неудачу, пока пользователь не обновит пароль, соответствующий вашей политике.
Уведомление : пользователям разрешено регистрироваться с несоответствующим паролем. При использовании этого режима вам следует проверить, соответствует ли пароль пользователя политике на стороне клиента, и предложить пользователю каким-либо образом обновить свой пароль, если он не соответствует.
Новым пользователям всегда необходимо выбрать пароль, соответствующий вашей политике.
Если у вас есть активные пользователи, мы рекомендуем не включать принудительное обновление при входе в систему, если вы не собираетесь блокировать доступ для пользователей, чьи пароли не соответствуют вашей политике. Вместо этого используйте режим уведомления, который позволяет пользователям входить в систему со своими текущими паролями и информировать их о требованиях, которых не хватает их паролю.
Проверка пароля на клиенте
import { getAuth, validatePassword } from "firebase/auth";
const status = await validatePassword(getAuth(), passwordFromUser);
if (!status.isValid) {
// Password could not be validated. Use the status to show what
// requirements are met and which are missing.
// If a criterion is undefined, it is not required by policy. If the
// criterion is defined but false, it is required but not fulfilled by
// the given password. For example:
const needsLowerCase = status.containsLowercaseLetter !== true;
}
Рекомендуется: включить защиту перечисления электронной почты.
Некоторые методы Firebase Authentication , которые принимают адреса электронной почты в качестве параметров, выдают определенные ошибки, если адрес электронной почты не зарегистрирован, когда его необходимо зарегистрировать (например, при входе в систему с адресом электронной почты и паролем), или зарегистрирован, когда его нельзя использовать (например, при изменении адреса электронной почты пользователя). Хотя это может быть полезно для предложения пользователям конкретных средств защиты, злоумышленники также могут использовать его для обнаружения адресов электронной почты, зарегистрированных вашими пользователями.
Чтобы снизить этот риск, мы рекомендуем вам включить защиту перечисления электронной почты для вашего проекта с помощью инструмента Google Cloud gcloud
. Обратите внимание, что включение этой функции меняет поведение отчетов об ошибках Firebase Authentication : убедитесь, что ваше приложение не полагается на более конкретные ошибки.
Следующие шаги
После того, как пользователь входит в систему в первый раз, создается новая учетная запись пользователя, которая связывается с учетными данными (то есть именем пользователя и паролем, номером телефона или информацией поставщика аутентификации), с которыми пользователь вошел в систему. Эта новая учетная запись хранится как часть вашего проекта Firebase и может использоваться для идентификации пользователя в каждом приложении вашего проекта, независимо от того, как пользователь входит в систему.
В ваших приложениях рекомендуемый способ узнать статус аутентификации вашего пользователя — установить наблюдателя на объекте
Auth
. Затем вы можете получить базовую информацию профиля пользователя из объектаUser
. См. Управление пользователями .В правилах безопасности базы данных реального времени и Cloud Storage Firebase Realtime Database вы можете получить уникальный идентификатор пользователя, вошедшего в систему, из переменной
auth
и использовать его для управления тем, к каким данным пользователь может получить доступ.
Вы можете разрешить пользователям входить в ваше приложение с использованием нескольких поставщиков аутентификации, привязав учетные данные поставщика аутентификации к существующей учетной записи пользователя.
Чтобы выйти из системы, вызовите signOut
:
Web
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
Web
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });