[TIL/React] 2023/08/02

원민관·2023λ…„ 8μ›” 2일
0

[TIL]

λͺ©λ‘ 보기
94/159
post-thumbnail

Authentication in ReactJS Using Firebase 🟠

ν”„λ‘œμ νŠΈμ˜ 진행을 μœ„ν•΄, 둜그인과 νšŒμ›κ°€μž… κΈ°λŠ₯(Authentication)에 λŒ€ν•œ ν•™μŠ΅μ€ ν•„μˆ˜λΆˆκ°€κ²°ν•˜λ‹€. 외ꡭ인 ν”„λ‘œκ·Έλž˜λ¨Έ λˆ„λ‹˜μ˜ 자료λ₯Ό μ°Έκ³ ν–ˆλ‹€.

reference: https://www.youtube.com/watch?v=Vv_Oi7zPPTw

src/App.js 🟑

import React from "react";
import SignIn from "./components/auth/SignIn";
import SignUp from "./components/auth/SignUp";
import AuthDetail from "./components/AuthDetail";

function App() {
  return (
    <div>
      <SignIn />
      <SignUp />
      <AuthDetail />
    </div>
  );
}

export default App;

μ΅œμƒλ‹¨ App νŒŒμΌμ—μ„œλŠ” SignIn, SignUp, AuthDetail μ»΄ν¬λ„ŒνŠΈλ₯Ό λ Œλ”λ§ν•˜κ³  μžˆλ‹€. ν₯λ―Έμ§„μ§„ν•˜κ΅¬λ§Œ!

src/components/auth/SignIn.js 🟑

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

const SignIn = () => {
  const [email, setEmail] = useState("");
  const [password, setPassword] = useState("");

  const signIn = (e) => {
    e.preventDefault();
    signInWithEmailAndPassword(auth, email, password)
      .then((userCredential) => {
        console.log(userCredential);
      })
      .catch((error) => {
        console.log(error);
      });
  };
  return (
    <div>
      <form onSubmit={signIn}>
        <h1>Log In to your Account</h1>
        <input
          type="email"
          placeholder="Enter your email"
          value={email}
          onChange={(e) => setEmail(e.target.value)}
        ></input>
        <input
          type="password"
          placeholder="Enter your password"
          value={password}
          onChange={(e) => setPassword(e.target.value)}
        ></input>
        <button>LogIn</button>
      </form>
    </div>
  );
};

export default SignIn;

SignIn μ»΄ν¬λ„ŒνŠΈλŠ” μš°μ„  'Log In to your Account'λΌλŠ” 제λͺ©μ„ λ°˜ν™˜ν•œλ‹€. κ·Έ λ‹€μŒ 두 개의 input ν•„λ“œμ™€ ν•œ 개의 λ²„νŠΌμ„ 보여쀀닀. return 뢀뢄은 λ”±νžˆ μ–΄λ €μš΄ 점이 μ—†λ‹€. 둜그인 λ²„νŠΌμ„ ν΄λ¦­ν•˜λŠ” μˆœκ°„ form νƒœκ·Έμ—μ„œ μž…λ ₯된 데이터가 signIn ν•¨μˆ˜μ— event 객체둜 μ „λ‹¬λœλ‹€. μ§„μ§œλ‘œ? γ…‡γ…‡ console 찍어봄!

signIn ν•¨μˆ˜λŠ” μž…λ ₯받은 데이터에 λŒ€ν•΄μ„œ κ°€μž₯ λ¨Όμ € preventDefault ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œλ‹€. form 제좜 μ‹œ νŽ˜μ΄μ§€ μƒˆλ‘œκ³ μΉ¨μ„ λ°©μ§€ν•˜λŠ” 역할을 μˆ˜ν–‰ν•œλ‹€.

signInWithEmailAndPasswordλŠ” firebaseμ—μ„œ μ œκ³΅ν•˜λŠ” ν•¨μˆ˜ 쀑 ν•˜λ‚˜λ‹€. 이 ν•¨μˆ˜λŠ” authλΌλŠ” firebase의 인증 객체와 email, passwordλ₯Ό λ°›μ•„μ„œ λ‘œκ·ΈμΈμ„ μ‹œλ„ν•˜λŠ” ν•¨μˆ˜μΈκ°€ 보닀. λ‚˜λŠ” λ§ν•˜λŠ” κ°μžλ‹ˆκΉŒ 일단 이 μ •λ„λ§Œ μ΄ν•΄ν•˜κ³  λ„˜μ–΄κ°€κ² λ‹€.

then은 둜그인이 μ„±κ³΅μ μœΌλ‘œ μ΄μ£Όμ–΄μ‘Œμ„ λ•Œ, 'userCredential' 객체λ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ λ°›μ•„μ„œ μ‹€ν–‰λ˜λŠ” 콜백 ν•¨μˆ˜μ΄λ‹€. 'userCredential' κ°μ²΄μ—λŠ” λ‘œκ·ΈμΈν•œ μ‚¬μš©μžμ— λŒ€ν•œ 정보가 ν¬ν•¨λ˜μ–΄ μžˆλ‹€.

catchλŠ” μ—λŸ¬κ°€ κ°μ§€λ˜λ©΄ μ½˜μ†”λ‘œ ν•΄λ‹Ή μ—λŸ¬λ₯Ό returnν•˜λŠ” 역할을 μˆ˜ν–‰ν•˜κ³  μžˆλ‹€.

μš”μ•½ 🟒

  1. 제λͺ©, input, button 리턴
  2. λ²„νŠΌ ν΄λ¦­ν•˜λ©΄ onSubmit에 μ˜ν•΄ formμ—μ„œ λ°œμƒν•œ 데이터가 event 객체둜 signIn ν•¨μˆ˜λ‘œ 전달됨
  3. signIn ν•¨μˆ˜μ—μ„œλŠ” μƒˆλ‘œκ³ μΉ¨μ„ λ°©μ§€ν•˜κ³  signInWithEmailAndPassword ν•¨μˆ˜λ₯Ό 톡해 λ‘œκ·ΈμΈμ„ μ‹œλ„ν•¨
  4. μ„±κ³΅ν•˜λ©΄ userCredentialμ΄λΌλŠ” 객체λ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ λ°›μ•„μ„œ console에 returnν•˜κ³ , μ‹€νŒ¨ν•˜λ©΄ errorλ₯Ό return함

회고 πŸ”΅

λ‚˜λ¨Έμ§€ 뢀뢄은 내일 μ •λ¦¬ν•˜κ³ , μ‹œκ°„μ΄ ν—ˆλ½ν•˜λ©΄ crud에 κ΄€ν•œ 자료λ₯Ό ν•™μŠ΅ν•˜λ„λ‘ ν•˜κ² λ‹€.

μ΄λ²ˆμ— μž˜ν•˜λƒ λͺ» ν•˜λƒ ν•˜λŠ” 것은 κ·Έλ ‡κ²Œ μ€‘μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ•žμœΌλ‘œ κΈ°νšŒκ°€ 수백, 수천 번 더 μžˆλ‹€λ©΄ λ§μž…λ‹ˆλ‹€. 그런 경우 더 μ€‘μš”ν•œ 것은 μ§€κΈˆ μž˜ν•˜λƒκ°€ μ•„λ‹ˆλΌ μ§€κΈˆ μžλΌλƒλŠ” κ²ƒμž…λ‹ˆλ‹€. μ‹€μ œ λ°”κΉ₯μ„Έμƒμ—μ„œλŠ” ν•œ 번의 νŒκ°€λ¦„μœΌλ‘œ λ‚˜μ˜ λ―Έλž˜κ°€, 우리의 λ―Έλž˜κ°€ κ°ˆλ¦¬λŠ” κ²½μš°λ³΄λ‹€λŠ” 수백, 수천 번의 λˆ„μ  μœ„μ— μ„œμ„œνžˆ μ •ν•΄μ§€λŠ” κ²½μš°κ°€ 더 λ§ŽμŠ΅λ‹ˆλ‹€.

-ν•¨κ»˜ 자라기: μ• μžμΌλ‘œ κ°€λŠ” κΈΈ δΈ­

profile
Write a little every day, without hope, without despair ✍️

0개의 λŒ“κΈ€