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νλ μν μ μννκ³ μλ€.
μμ½ π’
νκ³ π΅
λλ¨Έμ§ λΆλΆμ λ΄μΌ μ 리νκ³ , μκ°μ΄ νλ½νλ©΄ crudμ κ΄ν μλ£λ₯Ό νμ΅νλλ‘ νκ² λ€.
μ΄λ²μ μνλ λͺ» νλ νλ κ²μ κ·Έλ κ² μ€μνμ§ μμ΅λλ€. μμΌλ‘ κΈ°νκ° μλ°±, μμ² λ² λ μλ€λ©΄ λ§μ λλ€. κ·Έλ° κ²½μ° λ μ€μν κ²μ μ§κΈ μνλκ° μλλΌ μ§κΈ μλΌλλ κ²μ λλ€. μ€μ λ°κΉ₯μΈμμμλ ν λ²μ νκ°λ¦μΌλ‘ λμ λ―Έλκ°, μ°λ¦¬μ λ―Έλκ° κ°λ¦¬λ κ²½μ°λ³΄λ€λ μλ°±, μμ² λ²μ λμ μμ μμν μ ν΄μ§λ κ²½μ°κ° λ λ§μ΅λλ€.
-ν¨κ» μλΌκΈ°: μ μμΌλ‘ κ°λ κΈΈ δΈ