احراز هویت با Firebase در جاوا اسکریپت با استفاده از یک سیستم احراز هویت سفارشی

شما می‌توانید Firebase Authentication با یک سیستم احراز هویت سفارشی ادغام کنید، به این صورت که سرور احراز هویت خود را طوری تغییر دهید که وقتی کاربر با موفقیت وارد سیستم می‌شود، توکن‌های امضا شده سفارشی تولید کند. برنامه شما این توکن را دریافت کرده و از آن برای احراز هویت با فایربیس استفاده می‌کند.

قبل از اینکه شروع کنی

  1. فایربیس را به پروژه جاوا اسکریپت خود اضافه کنید .
  2. کلیدهای سرور پروژه خود را دریافت کنید:
    1. در کنسول Firebase ، به مسیر زیر بروید: > برگه حساب‌های سرویس .
    2. در پایین بخش Firebase Admin SDK ، روی «ایجاد کلید خصوصی جدید» کلیک کنید.
    3. جفت کلید عمومی/خصوصی حساب سرویس جدید به طور خودکار در رایانه شما ذخیره می‌شود. این فایل را در سرور احراز هویت خود کپی کنید.

احراز هویت با فایربیس

  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 شما ذخیره می‌شود و می‌تواند برای شناسایی کاربر در هر برنامه در پروژه شما، صرف نظر از نحوه ورود کاربر، مورد استفاده قرار گیرد.

  • در برنامه‌های شما، روش پیشنهادی برای اطلاع از وضعیت احراز هویت کاربر، تنظیم یک ناظر (observer) روی شیء Auth است. سپس می‌توانید اطلاعات اولیه پروفایل کاربر را از شیء User دریافت کنید. به بخش مدیریت کاربران (Manage Users) مراجعه کنید.

  • در قوانین امنیتی پایگاه داده و 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.
});