برنامه نویسی

نحوه تنظیم احراز هویت FIREBASE در یک پروژه REACT

معرفی

راه‌اندازی روشی برای احراز هویت برای کاربران یک راه واقعاً خوب برای بهبود چشم‌انداز برنامه وب شما است. ممکن است برخی از مسیرهای محافظت شده داشته باشید که فقط می خواهید کاربرانی که به آن ها احراز هویت شده و وارد سیستم شده اند دسترسی داشته باشند. راه‌های زیادی برای تنظیم احراز هویت وجود دارد، از جمله استفاده از یک Backend، استفاده از تأیید اعتبار Nextjs یا احراز هویت firebase و بسیاری دیگر. این مقاله قرار است احراز هویت با firebase را پوشش دهد. Firebase یک فناوری است که خدمات پشتیبان زیادی را ارائه می دهد. به طور کلی به عنوان Backend به عنوان یک سرویس (BaaS) شناخته می شود. متعلق به گوگل است و طیف وسیعی از خدمات از جمله: پایگاه داده بلادرنگ، ذخیره سازی ابری، میزبانی و احراز هویت، چیزی است که در این مقاله به آن می پردازیم. قبل از اینکه ادامه دهید، این آموزش برای کسانی است که از قبل راحت از React استفاده می کنند و نه برای مبتدیان مطلق.

احراز هویت با Firebase

احراز هویت کاربران با استفاده از firebase بسیار ساده است، با استفاده از firebase SDK می توانید احراز هویت را با شماره تلفن، ایمیل و رمز عبور تنظیم کنید که محبوب ترین آنهاست. شما همچنین می توانید احراز هویت را با سایر سرویس های شخص ثالث مانند گوگل، توییتر، اپل، مایکروسافت، فیس بوک، گیت هاب و غیره تنظیم کنید. احراز هویت با firebase را می توان برای برنامه های تحت وب، برنامه های iOS، برنامه های اندروید و غیره و با برنامه نویسی زیاد استفاده کرد. زبان ها و چارچوب ها این مقاله قرار است احراز هویت برای برنامه های کاربردی وب و به طور خاص تر، احراز هویت با ایمیل و رمز عبور را در React پوشش دهد. احراز هویت و احراز هویت در طول این مقاله به جای یکدیگر مورد استفاده قرار خواهند گرفت، هر دو به یک معنا هستند.

شروع با احراز هویت ایمیل / رمز عبور

قبل از اینکه احراز هویت firebase را در پروژه React خود ادغام کنید، باید یک حساب Google داشته باشید که سپس از آن برای ایجاد یک حساب Firebase استفاده کنید. پس از انجام تمام احراز هویت لازم، اینجا را کلیک کنید تا با یک پروژه جدید شروع کنید. وقتی وارد شدید، روی دکمه «شروع به کار» که می بینید کلیک کنید. شما را به صفحه ای هدایت می کند که می توانید پروژه ای را اضافه کنید. برای افزودن پروژه، روی دکمه “افزودن پروژه” کلیک کنید. پروژه را نام ببرید. این می تواند هر چیزی باشد. در صورت تمایل می توانید از “my-auth-project” استفاده کنید. و سپس، ادامه دهید. از شما خواسته می شود که Google Analytics را برای پروژه فعال کنید، می توانید آن را رد کنید و روی “ایجاد پروژه” کلیک کنید. چند ثانیه صبر کنید تا پروژه جدید شما ایجاد شود. اکنون که پروژه جدید شما ایجاد شده است، روی “ادامه” کلیک کنید. شما به رابطی خواهید رسید که در آن گزینه های زیادی می بینید، می توانید هر چیزی را که می خواهید پیاده سازی کنید انتخاب کنید. برای احراز هویت، روی احراز هویت کلیک کنید و این شما را به یک رابط جدید هدایت می کند که در آن می توانید نحوه احراز هویت کاربران را انتخاب کنید. روی ایمیل/رمز عبور کلیک کنید. پس از آن، مطمئن شوید که ایمیل/رمز عبور را فعال کرده اید و روی ذخیره کلیک کنید. شما یک رابط جدید، یک رابط خالی بدون هیچ کاربری تایید شده را می بینید.
اکنون به VSCODE بروید و با استفاده از “npx create-react-app auth” یک پروژه React جدید ایجاد کنید، “auth” نام پروژه react در اینجا است. می‌توانید هر نامی به آن بدهید یا فقط یک فاصله بگذارید و «.» را بعد از CRA اضافه کنید. پس از آن، مطمئن شوید که در دایرکتوری auth هستید و firebase را در برنامه خود نصب کنید. “npm i firebase”، این firebase را برای شما نصب می کند. اکنون به firebase برگردید، به پروژه ای که در ابتدا ایجاد کردید و روی نماد پروژه وب “” که در آنجا می بینید کلیک کنید. سومی از سمت چپ همانطور که در تصویر زیر مشاهده می کنید؛

توضیحات تصویر

حالا همانطور که آنها خواسته اند یک نام مستعار به آن بدهید. میتونه هر اسمی باشه پس از انجام این کار، بر روی “ثبت نام” برنامه کلیک کنید. این شما را به رابط دیگری هدایت می کند که در آن باید firebase را با استفاده از Npm نصب کنید. ما قبلاً این کار را انجام دادیم. اکنون، از آن بگذرید و به سراغ بعدی بروید، که کد firebase را کپی می کند. یک فایل firebase.js در دایرکتوری src ایجاد کنید، اینجا جایی است که کد را برای مقداردهی اولیه firebase در برنامه React خود قرار می دهید. اینجا جایی است که تمام تنظیمات firebase شما برای پروژه React شما انجام می شود. مجدداً از کد چسبانده شده برای مقداردهی اولیه firebase در برنامه شما استفاده می شود. به قطعه کد زیر نگاهی بیندازید؛

// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries

// Your web app's Firebase configuration
const firebaseConfig = {
  apiKey: "AIzaSyARMzfqJbdwtsPVQCiR0qEM96P_fj1acuE",
  authDomain: "my-auth-project-744de.firebaseapp.com",
  projectId: "my-auth-project-744de",
  storageBucket: "my-auth-project-744de.appspot.com",
  messagingSenderId: "908733099316",
  appId: "1:908733099316:web:089d2658ec0910dc148961"
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به یاد داشته باشید که از خودتان استفاده کنید، همه آنها منحصر به فرد هستند، هم شناسه ها و هم کلیدهای پروژه و برنامه.

اکنون که این کار را انجام دادید، باید به firebase بگویید که از احراز هویت در پروژه خود استفاده می کنید و چگونه این کار را با مقداردهی اولیه firebase auth در پیکربندی firebase.js خود انجام می دهید. کد به روز شده زیر را بررسی کنید؛

// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
import { getAuth } from "firebase/auth";
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries

// Your web app's Firebase configuration
const firebaseConfig = {
  apiKey: "AIzaSyARMzfqJbdwtsPVQCiR0qEM96P_fj1acuE",
  authDomain: "my-auth-project-744de.firebaseapp.com",
  projectId: "my-auth-project-744de",
  storageBucket: "my-auth-project-744de.appspot.com",
  messagingSenderId: "908733099316",
  appId: "1:908733099316:web:089d2658ec0910dc148961"
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);

// Initialize Firebase Authentication and get a reference to the service
export const auth = getAuth(app);
export default app;

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با مقداردهی اولیه firebase auth در کد بالا، اکنون یک مرجع به سرویس احراز هویت firebase اضافه کرده اید.

اجرای احراز هویت در پروژه شما

اکنون که تنظیمات لازم را انجام داده اید، باید اجرای احراز هویت را در پروژه خود شروع کنید. شما می توانید این کار را هر طور که دوست دارید انجام دهید، اما این یک روش بسیار ساده و بدون سبک است، عمدتاً بر منطق اجرای احراز هویت در پروژه شما متمرکز خواهد بود. حالا یک پوشه کامپوننت ایجاد کنید و در آن پوشه، یک پوشه دیگر ایجاد کنید. می توانید آن را “auth” بنامید. در این پوشه “auth” دو فایل ایجاد کنید. من این فایل ها را “ثبت نام” و “ورود به سیستم” می نامم، شما می توانید همین کار را انجام دهید.

در فایل signUp، با استفاده از میانبر VSCODE، RAFCE، یک جزء فلش عملکردی ایجاد کنید، یک فرم ایجاد کنید و منطق را پیاده سازی کنید. به قطعه کد زیر در مورد نحوه اجرای عملکرد ثبت نام نگاهی بیندازید.

import React, {useState} from 'react';
import {  createUserWithEmailAndPassword  } from 'firebase/auth';
import { auth } from '../firebase';

const Signup = () => {
   const [email, setEmail] = useState('')
    const [password, setPassword] = useState('');

    const userSignUp = (e) => {
      e.preventDefault()
createUserWithEmailAndPassword(auth, email, password).then((userCredential) => {
            // Signed in
            const user = userCredential.user;
            console.log(user);

        }) .catch((error) => {
            const errorCode = error.code;
            const errorMessage = error.message;
            console.log(errorCode, errorMessage);

        });


    }

  return (
<section>
   <div>
      <div>                  
        <h1> Create Account <h1>                                                                            

<form onSubmit=“userSignUp”>                                                                                          
 <div>
  <input type="email"
  value={email}
  onChange={(e) =>      setEmail(e.target.value)}  
 required                                    
  placeholder="Enter your email address…"/>
 </div>

<div>
 <input type="password"
 value={password}
 onChange={(e) => setPassword(e.target.value)} 
required                                 
placeholder="Enter your password…" />
 </div>                                             
 <button type="submit" 
onClick={userSignUp}>  
    Sign up                                
 </button>
                                                                     </form>
</div>
 </div>
 </section>
  )
}

export default Signup

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با استفاده از قطعه کد بالا، می توانید به راحتی با استفاده از firebase یک قابلیت ثبت نام در برنامه خود ایجاد کنید.

در فایل signIn، از RAFCE استفاده کنید، که یک میانبر VSCODE برای ایجاد یک جزء فلش عملکردی است. و ایجاد فرم و پیاده سازی منطق برای ورود کاربران می توانید از قطعه کد زیر استفاده کنید.




import React, {useState} from 'react';
import {  signInWithEmailAndPassword   } from 'firebase/auth';
import { auth } from '../firebase';

const Login = () => {
    const [email, setEmail] = useState('');
    const [password, setPassword] = useState('');

    const userLogin = (e) => {
        e.preventDefault();
        signInWithEmailAndPassword(auth, email, password)
        .then((userCredential) => {
            // Signed in
            const user = userCredential.user;
             console.log(user);
        }) .catch((error) => {
            const errorCode = error.code;
            const errorMessage = error.message;
            console.log(errorCode, errorMessage)
        });

    }

    return(
        <>

                <section>
                    <div>                                            
                        <p>Login into your account</p>                       

                        <form>                                              
                            <div>

                                <input 
                                    Value=“email”
                                    type="email"                                    
                                    required                                                                                
                                    placeholder="Enter your email address…"
                                    onChange={(e)=>setEmail(e.target.value)}
                                />
                            </div>

                            <div>
                             <input 
                                value=“password”
                                type="email"
                                required
                                placeholder="Enter your password…"
                                onChange={(e)=>setPassword(e.target.value)}/>
                            </div>

                            <div>
                                <button onClick={userLogin}>      
                                    Login                                                                  
                                </button>
                            </div>                               
                        </form>


                    </div>
                </section>

        </>
    )
}

export default Login

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کد بالا برای کاربرانی که قبلا ثبت نام کرده اند و فقط باید وارد سیستم شوند، احراز هویت را انجام می دهد.

برای عملکرد ثبت نام، هنگامی که کاربر ثبت نام کرد، روی کنسول Firebase شما منعکس می شود. شما می توانید جزئیات کاربری را که به تازگی ثبت نام کرده است ببینید. مهر زمان، ارائه دهنده، و همچنین شناسه کاربری منحصر به فرد را می بینید.

عملکرد بعدی یک ناظر وضعیت احراز هویت است که بررسی می کند کدام کاربر وارد سیستم شده است و کاربر وارد شده چگونه می تواند از سیستم خارج شود. این را می توان در فایل دیگری ایجاد کرد که می توانید آن را authDetails.js یا هر چیزی که دوست دارید نام گذاری کنید. قطعه کد زیر را بررسی کنید:


import React, { useState, useEffect } from 'react';
import { onAuthStateChanged, signOut } from "firebase/auth";
import { auth } from '../firebase';

const AuthDetails = () => {
Const [authUser, setAuthUser]=useState(null)

    useEffect(()=>{
        onAuthStateChanged(auth, (user) => {
            if (user) {
              setAuthUser(user)
              // User is signed in, see docs for a list of available properties
              // https://firebase.google.com/docs/reference/js/firebase.User
              const uid = user.uid;
              // ...
              console.log("uid", uid)
            } else {
              setAuthUser(null)
              // User is signed out
              // ...
              console.log("user is logged out")
            }
          });
        return ()=>{
            listen()
          }
    }, [])
 //this logic is for logging out a signed in user
const handleLogout = () => {               
        signOut(auth).then(() => {
        // Sign-out successful.
           console.log("Signed out successfully")
        }).catch((error) => {
        // An error happened.
        });
    }
  return (
    <div>        
//this shows if a user is signed in and the user email.
     {authUser ? <p>{`user is signed in as ${authUser.email}`}</p>
//this button is for logging out a signed in user
<button onClick={handleLogout}>Sign Out</button>
: <p>User signed Out</p>
//if the second condition is met, that means user is signed out, the text “User signed Out” will show.
    </div>
  )
}

export default AuthDetails

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در نتیجه، احراز هویت Firebase به راحتی قابل پیاده‌سازی است و به شما کمک می‌کند تا به‌طور یکپارچه ثبت نام کنید، وارد سیستم شوید و کاربران جدید را از سیستم خارج کنید. امیدوارم این مفید بوده باشد. اگر این را مفید یافتید، لطفاً من را دنبال کنید توییتر یا در لینکدین و بیایید وصل شویم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا