يمكنك استخدام Firebase Authentication للسماح للمستخدمين بالمصادقة باستخدام Firebase من خلال عناوين بريدهم الإلكتروني وكلمات المرور، وإدارة الحسابات المستندة إلى كلمات المرور في تطبيقك.
قبل البدء
- أضِف Firebase إلى مشروع JavaScript.
- إذا لم يسبق لك ربط تطبيقك بمشروع Firebase، يمكنك إجراء ذلك من وحدة تحكّم Firebase 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; // .. });
هذا هو أيضًا المكان الذي يمكنك فيه رصد الأخطاء ومعالجتها. للاطّلاع على قائمة برموز الأخطاء، يمكنك مراجعة مستندات مرجع المصادقة Auth Reference Docs.
تسجيل دخول مستخدم باستخدام عنوان بريد إلكتروني وكلمة مرور
تشبه خطوات تسجيل دخول مستخدم بكلمة مرور خطوات إنشاء حساب جديد. في صفحة تسجيل الدخول في تطبيقك، اتّبِع الخطوات التالية:
- عندما يسجّل مستخدم الدخول إلى تطبيقك، مرِّر عنوان البريد الإلكتروني و
كلمة المرور للمستخدم إلى
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; });
هذا هو أيضًا المكان الذي يمكنك فيه رصد الأخطاء ومعالجتها. للاطّلاع على قائمة برموز الأخطاء، يمكنك مراجعة مستندات مرجع المصادقة Auth Reference Docs.
ننصحك بما يلي: تحديد سياسة كلمات المرور
يمكنك تحسين أمان الحساب من خلال فرض متطلبات تعقيد كلمات المرور.
لضبط سياسة كلمات المرور لمشروعك، افتح قسم سياسة كلمات المرور في علامة التبويب الأمان > المصادقة > الإعدادات في وحدة تحكّم 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 التي تأخذ عناوين البريد الإلكتروني كمعلّمات أخطاء محدّدة إذا كان عنوان البريد الإلكتروني غير مسجّل عندما يجب أن يكون مسجّلاً (على سبيل المثال، عند تسجيل الدخول باستخدام عنوان بريد إلكتروني وكلمة مرور)، أو مسجّلاً عندما يجب أن يكون غير مستخدَم (على سبيل المثال، عند تغيير عنوان البريد الإلكتروني لمستخدم). على الرغم من أنّ ذلك قد يكون مفيدًا في اقتراح حلول محدّدة للمستخدمين، يمكن أيضًا أن يسيء استخدامه الجهات الضارة لاكتشاف عناوين البريد الإلكتروني التي سجّلها المستخدمون.
للحدّ من هذا الخطر، ننصحك بـ تفعيل ميزة الحماية من تعداد عناوين البريد الإلكتروني
لمشروعك باستخدام أداة 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. });