জাভাস্ক্রিপ্ট ব্যবহার করে পাসওয়ার্ড-ভিত্তিক অ্যাকাউন্ট ব্যবহার করে ফায়ারবেসের সাথে প্রমাণীকরণ করুন

আপনার ব্যবহারকারীদের তাদের ইমেল ঠিকানা এবং পাসওয়ার্ড ব্যবহার করে Firebase এর সাথে প্রমাণীকরণ করতে এবং আপনার অ্যাপের পাসওয়ার্ড-ভিত্তিক অ্যাকাউন্টগুলি পরিচালনা করতে আপনি Firebase Authentication ব্যবহার করতে পারেন।

আপনি শুরু করার আগে

  1. আপনার JavaScript প্রকল্পে Firebase যোগ করুন
  2. আপনি যদি এখনও আপনার অ্যাপটিকে আপনার Firebase প্রকল্পের সাথে সংযুক্ত না করে থাকেন, তাহলে Firebase কনসোল থেকে তা করুন৷
  3. ইমেল/পাসওয়ার্ড সাইন-ইন সক্ষম করুন:
    1. Firebase কনসোলে , Auth বিভাগটি খুলুন।
    2. সাইন ইন পদ্ধতি ট্যাবে, ইমেল/পাসওয়ার্ড সাইন-ইন পদ্ধতি সক্ষম করুন এবং সংরক্ষণ করুন ক্লিক করুন।

একটি পাসওয়ার্ড-ভিত্তিক অ্যাকাউন্ট তৈরি করুন

একটি পাসওয়ার্ড সহ একটি নতুন ব্যবহারকারী অ্যাকাউন্ট তৈরি করতে, আপনার অ্যাপের সাইন-আপ পৃষ্ঠায় নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  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 কনসোলের প্রমাণীকরণ সেটিংস পৃষ্ঠায় পাসওয়ার্ড নীতি ট্যাবটি খুলুন:

প্রমাণীকরণ সেটিংস

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 পদ্ধতি যেগুলি ইমেল ঠিকানাগুলিকে প্যারামিটার হিসাবে গ্রহণ করে সেগুলি নির্দিষ্ট ত্রুটিগুলি ফেলে যদি ইমেল ঠিকানাটি নিবন্ধিত না থাকে যখন এটি নিবন্ধিত হতে হবে (উদাহরণস্বরূপ, একটি ইমেল ঠিকানা এবং পাসওয়ার্ড দিয়ে সাইন ইন করার সময়), বা যখন এটি অবশ্যই অব্যবহৃত হবে তখন নিবন্ধিত হবে (উদাহরণস্বরূপ, ব্যবহারকারীর ইমেল ঠিকানা পরিবর্তন করার সময়)। যদিও এটি ব্যবহারকারীদের নির্দিষ্ট প্রতিকারের পরামর্শ দেওয়ার জন্য সহায়ক হতে পারে, এটি আপনার ব্যবহারকারীদের দ্বারা নিবন্ধিত ইমেল ঠিকানাগুলি আবিষ্কার করার জন্য দূষিত অভিনেতাদের দ্বারা অপব্যবহার করা যেতে পারে।

এই ঝুঁকি কমাতে, আমরা আপনাকে Google Cloud gcloud টুল ব্যবহার করে আপনার প্রকল্পের জন্য ইমেল গণনা সুরক্ষা সক্ষম করার সুপারিশ করছি। মনে রাখবেন যে এই বৈশিষ্ট্যটি সক্ষম করলে Firebase Authentication ত্রুটি রিপোর্টিং আচরণ পরিবর্তন হয়: নিশ্চিত হন যে আপনার অ্যাপটি আরও নির্দিষ্ট ত্রুটির উপর নির্ভর করে না।

পরবর্তী পদক্ষেপ

একজন ব্যবহারকারী প্রথমবার সাইন ইন করার পরে, একটি নতুন ব্যবহারকারীর অ্যাকাউন্ট তৈরি করা হয় এবং শংসাপত্রগুলির সাথে লিঙ্ক করা হয়—অর্থাৎ, ব্যবহারকারীর নাম এবং পাসওয়ার্ড, ফোন নম্বর, বা প্রমাণ প্রদানকারীর তথ্য — ব্যবহারকারী সাইন ইন করেছেন। এই নতুন অ্যাকাউন্টটি আপনার ফায়ারবেস প্রকল্পের অংশ হিসাবে সংরক্ষণ করা হয়েছে এবং ব্যবহারকারী কীভাবে সাইন ইন করুন না কেন, আপনার প্রকল্পের প্রতিটি অ্যাপ জুড়ে একজন ব্যবহারকারীকে শনাক্ত করতে ব্যবহার করা যেতে পারে।

  • আপনার অ্যাপে, আপনার ব্যবহারকারীর প্রমাণীকরণের স্থিতি জানার প্রস্তাবিত উপায় হল 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.
});