אימות עם Firebase באמצעות חשבונות מבוססי-סיסמה באמצעות JavaScript

אפשר להשתמש ב-Firebase Authentication כדי לאפשר למשתמשים לבצע אימות ב-Firebase באמצעות כתובות האימייל והסיסמאות שלהם, ולנהל את החשבונות של האפליקציה שמבוססים על סיסמה.

לפני שמתחילים

  1. מוסיפים את Firebase לפרויקט JavaScript.
  2. אם עדיין לא קישרתם את האפליקציה לפרויקט Firebase, צריך לעשות זאת דרך מסוף Firebase.
  3. מפעילים את הכניסה באמצעות כתובת אימייל/סיסמה:
    1. במסוף Firebase, פותחים את הקטע Auth.
    2. בכרטיסייה שיטת כניסה, מפעילים את הכניסה אימייל/סיסמה ולוחצים על Save.

יצירת חשבון שמבוסס על סיסמה

כדי ליצור חשבון משתמש חדש עם סיסמה, צריך לבצע את השלבים הבאים ב- דף ההרשמה של האפליקציה:

  1. כשמשתמש חדש נרשם באמצעות טופס ההרשמה של האפליקציה, צריך להשלים את כל שלבי אימות החשבון החדשים הנדרשים באפליקציה, למשל אימות שהסיסמה של החשבון החדש הוזנה בצורה נכונה ועומדת בדרישות המורכבות שלכם.
  2. ליצור חשבון חדש על ידי העברת כתובת האימייל והסיסמה של המשתמש החדש אל 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;
        // ..
      });
    אם החשבון החדש נוצר, המשתמש יחובר לחשבון באופן אוטומטי. בקטע 'השלבים הבאים' שבהמשך מוסבר איך לקבל את פרטי המשתמש שנכנס לחשבון.

    כאן גם תוכלו לזהות שגיאות ולטפל בהן. רשימה של קודי שגיאה מופיעה במסמכי העזר לאימות.

כניסה של משתמש באמצעות כתובת אימייל וסיסמה

השלבים לכניסה של משתמש באמצעות סיסמה דומים לשלבים של יצירת חשבון חדש. בדף הכניסה של האפליקציה, מבצעים את הפעולות הבאות:

  1. כשמשתמש נכנס לאפליקציה, מעבירים את כתובת האימייל והסיסמה שלו אל 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 Authentication שמקבלות כתובות אימייל כפרמטרים גורמות להצגת שגיאות ספציפיות אם כתובת האימייל לא רשומה כשצריך לרשום אותה (לדוגמה, כשיוצרים חשבון באמצעות כתובת אימייל וסיסמה), או אם היא רשומה כשאסור להשתמש בה (לדוגמה, כשמשנים את כתובת האימייל של משתמש). האפשרות הזו יכולה לעזור למשתמשים להציע טיפולים ספציפיים, אבל עלולים לנצל לרעה את הכתובות של גורמים זדוניים כדי לגלות את כתובות האימייל שרשומות משתמשים.

כדי לצמצם את הסיכון הזה, מומלץ להפעיל הגנה על ספירת כתובות אימייל בפרויקט באמצעות הכלי gcloud של Google Cloud. שימו לב שההפעלה של התכונה משנה את אופן הדיווח על שגיאות של 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.
});