Uwierzytelnianie Firebase umożliwia uwierzytelnianie użytkowników w Firebase za pomocą ich adresów e-mail i haseł oraz zarządzanie kontami w aplikacji, które są chronione hasłem.Firebase Authentication
Zanim zaczniesz
- Dodaj Firebase do projektu JavaScript.
- Jeśli nie masz jeszcze połączonej aplikacji z projektem w Firebase, zrób to w Firebase konsoli.
-
Włącz logowanie za pomocą adresu e-mail i hasła jako dostawcę logowania w projekcie Firebase:
- W konsoli Firebase kliknij Bezpieczeństwo > Uwierzytelnianie.
- Na karcie Metoda logowania włącz dostawcę logowania Adres e-mail/hasło dostawcy.
- Kliknij Zapisz.
Tworzenie konta chronionego hasłem
Aby utworzyć nowe konto użytkownika z hasłem, wykonaj te czynności na stronie rejestracji w aplikacji:
- Gdy nowy użytkownik zarejestruje się za pomocą formularza rejestracji w aplikacji, wykonaj wszystkie kroki weryfikacji nowego konta wymagane przez aplikację, np. sprawdź, czy hasło nowego konta zostało wpisane prawidłowo i czy spełnia wymagania dotyczące złożoności wymagania.
- Utwórz nowe konto, przekazując adres e-mail i hasło nowego użytkownika
do
createUserWithEmailAndPassword:Jeśli nowe konto zostało utworzone, użytkownik jest automatycznie logowany. Aby uzyskać szczegółowe informacje o zalogowanym użytkowniku, zapoznaj się z sekcją Dalsze kroki poniżej.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; // .. });
W tym miejscu możesz też przechwytywać i obsługiwać błędy. Listę kodów błędów znajdziesz w dokumentacji referencyjnej uwierzytelniania.
Logowanie użytkownika za pomocą adresu e-mail i hasła
Czynności związane z logowaniem użytkownika za pomocą hasła są podobne do czynności związanych z tworzeniem nowego konta. Na stronie logowania w aplikacji wykonaj te czynności:
- Gdy użytkownik zaloguje się w aplikacji, przekaż jego adres e-mail i
hasło do
signInWithEmailAndPassword:Aby uzyskać szczegółowe informacje o zalogowanym użytkowniku, zapoznaj się z sekcją Dalsze kroki poniżej.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; });
W tym miejscu możesz też przechwytywać i obsługiwać błędy. Listę kodów błędów znajdziesz w dokumentacji referencyjnej uwierzytelniania.
Zalecane: ustawienie zasad dotyczących haseł
Możesz zwiększyć bezpieczeństwo kont, egzekwując wymagania dotyczące złożoności haseł.
Aby skonfigurować zasady dotyczące haseł w projekcie, otwórz sekcję Zasady dotyczące haseł na karcie Bezpieczeństwo > Uwierzytelnianie > Ustawienia w konsoli Firebase:
Firebase Authentication zasady dotyczące haseł obsługują te wymagania dotyczące haseł:
Wymagany jest znak pisany małą literą
Wymagany jest znak pisany wielką literą
Wymagany jest znak numeryczny
Wymagany jest znak niealfanumeryczny
Wymaganie dotyczące znaku niealfanumerycznego spełniają te znaki:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~Minimalna długość hasła (od 6 do 30 znaków; domyślnie 6)
Maksymalna długość hasła (maksymalnie 4096 znaków)
Egzekwowanie zasad dotyczących haseł możesz włączyć w 2 trybach:
Wymagaj: rejestracja nie będzie możliwa, dopóki użytkownik nie zmieni hasła zgodnie z zasadami.
Powiadom: użytkownicy mogą się zarejestrować, używając hasła niezgodnego z zasadami. W tym trybie musisz sprawdzić, czy hasło użytkownika jest zgodne z zasadami po stronie klienta, i w jakiś sposób poprosić użytkownika o zaktualizowanie hasła, jeśli nie jest ono zgodne z zasadami.
Nowi użytkownicy zawsze muszą wybrać hasło zgodne z zasadami.
Jeśli masz aktywnych użytkowników, zalecamy, aby nie włączać wymuszenia aktualizacji przy logowaniu, chyba że chcesz zablokować dostęp użytkownikom, których hasła nie są zgodne z zasadami. Zamiast tego użyj trybu powiadamiania, który umożliwia użytkownikom logowanie się za pomocą bieżących haseł, i poinformuj ich o wymaganiach, których ich hasła nie spełniają.
Sprawdzanie hasła po stronie klienta
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;
}
Zalecane: włączenie ochrony przed wyliczaniem adresów e-mail
Niektóre metody Firebase Authentication przyjmujące adresy e-mail jako parametry zgłaszają określone błędy, jeśli adres e-mail nie jest zarejestrowany, gdy powinien być zarejestrowany (np. podczas logowania się za pomocą adresu e-mail i hasła), lub jest zarejestrowany gdy nie powinien być używany (np. podczas zmiany adresu e-mail użytkownika). Może to być przydatne do sugerowania użytkownikom konkretnych rozwiązań, ale może też zostać wykorzystane przez złośliwych użytkowników do odkrywania adresów e-mail zarejestrowanych przez Twoich użytkowników.
Aby zmniejszyć to ryzyko, zalecamy włączenie ochrony przed wyliczaniem adresów e-mail
w projekcie za pomocą narzędzia Google Cloud gcloud. Pamiętaj, że włączenie tej
funkcji zmienia sposób raportowania błędów przez Firebase Authentication. Upewnij się, że Twoja aplikacja
nie korzysta z bardziej szczegółowych błędów.
Dalsze kroki
Gdy użytkownik zaloguje się po raz pierwszy, zostanie utworzone nowe konto użytkownika i połączone z danymi logowania, czyli nazwą użytkownika i hasłem, numerem telefonu lub informacjami o dostawcy uwierzytelniania, za pomocą których użytkownik się zalogował. To nowe konto jest przechowywane jako część projektu w Firebase i może służyć do identyfikowania użytkownika w każdej aplikacji w projekcie, niezależnie od sposobu logowania.
-
W aplikacjach zalecanym sposobem sprawdzenia stanu uwierzytelnienia użytkownika jest ustawienie obserwatora w obiekcie
Auth. Następnie możesz pobrać podstawowe informacje o profilu użytkownika z obiektuUser. Zobacz Zarządzanie użytkownikami. W regułach bezpieczeństwa Firebase Realtime Database i Cloud Storage bazy danych czasu rzeczywistego Firebase i Cloud Storage, możesz pobrać unikalny identyfikator zalogowanego użytkownika z zmiennej
auth, i użyć go do kontrolowania, do jakich danych użytkownik może mieć dostęp.
Możesz zezwolić użytkownikom na logowanie się w aplikacji za pomocą wielu dostawców uwierzytelniania przez połączenie danych logowania dostawcy uwierzytelniania z istniejącym kontem użytkownika.
Aby wylogować użytkownika, wywołaj funkcję
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. });