Вы можете использовать Firebase Authentication , чтобы позволить пользователям аутентифицироваться в Firebase, используя свои адреса электронной почты и пароли, а также для управления учетными записями вашего приложения, основанными на паролях.
Прежде чем начать
- Добавьте Firebase в свой JavaScript-проект .
- Если вы еще не подключили свое приложение к проекту Firebase, сделайте это через консоль Firebase .
- Включите вход по электронной почте и паролю:
- В консоли Firebase откройте раздел «Аутентификация» .
- На вкладке «Способ входа» выберите способ входа по электронной почте/паролю и нажмите «Сохранить» .
Создайте учетную запись на основе пароля.
Чтобы создать новую учетную запись пользователя с паролем, выполните следующие действия на странице регистрации вашего приложения:
- Когда новый пользователь регистрируется через форму регистрации вашего приложения, выполните все необходимые шаги проверки учетной записи, например, убедитесь, что пароль новой учетной записи введен правильно и соответствует вашим требованиям к сложности.
- Создайте новую учетную запись, передав адрес электронной почты и пароль нового пользователя в функцию
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. См. раздел «Управление пользователями» .В правилах безопасности Firebase Realtime Database и Cloud Storage вы можете получить уникальный идентификатор пользователя, вошедшего в систему, из переменной
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. });