אימות עם Firebase ב-JavaScript באמצעות מערכת אימות מותאמת אישית

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

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

  1. מוסיפים את Firebase לפרויקט JavaScript.
  2. מקבלים את מפתחות השרת של הפרויקט:
    1. עוברים לדף Service Accounts בהגדרות הפרויקט.
    2. לוחצים על Generate New Private Key (יצירת מפתח פרטי חדש) בתחתית הקטע Firebase Admin SDK בדף Service Accounts.
    3. זוג המפתחות הציבורי/הפרטי של חשבון השירות החדש נשמר באופן אוטומטי במחשב. מעתיקים את הקובץ הזה לשרת האימות.

אימות באמצעות Firebase

  1. כשמשתמשים נכנסים לאפליקציה, שולחים את פרטי הכניסה שלהם (למשל, שם המשתמש והסיסמה) לשרת האימות. השרת בודק את פרטי הכניסה ומחזיר אסימון מותאם אישית אם הם תקינים.
  2. אחרי שמקבלים את האסימון המותאם אישית משרת האימות, מעבירים אותו אל signInWithCustomToken כדי להיכנס לחשבון של המשתמש:

    Web

    import { getAuth, signInWithCustomToken } from "firebase/auth";
    
    const auth = getAuth();
    signInWithCustomToken(auth, token)
      .then((userCredential) => {
        // Signed in
        const user = userCredential.user;
        // ...
      })
      .catch((error) => {
        const errorCode = error.code;
        const errorMessage = error.message;
        // ...
      });

    Web

    firebase.auth().signInWithCustomToken(token)
      .then((userCredential) => {
        // Signed in
        var user = userCredential.user;
        // ...
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });

השלבים הבאים

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