FRONTEND/React

[마이머니앱] 네비게이션 가드

죠으닝 2023. 12. 4. 15:05

네비게이션 가드란?

네비게이션 가드(navigation guard)란 뷰 라우터로 특정 URL에 접근할 때 해당 URL의 접근을 막는 방법을 말합니다. 예를 들어, 사용자의 인증 정보가 없으면 특정 페이지에 접근하지 못하게 할 때 사용하는 기술입니다
https://blog.naver.com/drv983/223182320993

 

네비게이션션 가드 : 인증된 유저와 안된유저에 따라서 페이지 요청시 막기

네비게이션 가드란? 네비게이션 가드(navigation guard)란 뷰 라우터로 특정 URL에 접근할 때 해당 UR...

blog.naver.com

 

 

 

 


 

 

App.jsx

import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom";
import "./App.css";
import Home from "./pages/home/Home";
import Login from "./pages/login/Login";
import Signup from "./pages/signup/Signup";
import Navbar from "./Components/Navbar";
import { useAuthContext } from "./hooks/useAuthContext";

function App() {
  //파이어 베이스 인증확인을 한 후 앱을 사용가능
  const { authIsReady, user } = useAuthContext();

  return (
    <>
      <div className="App">
        {authIsReady && (
          <BrowserRouter>
            <Navbar />
            <Routes>
              <Route
                path="/"
                element={user ? <Home /> : <Navigate to="/login" />}
              />
              <Route path="/login" element={!user ? <Login /> : <Home />} />
              <Route path="/signup" element={!user ? <Signup /> : <Home />} />
            </Routes>
          </BrowserRouter>
        )}
      </div>
    </>
  );
}

export default App;

 

home 페이지를 요청했을 시 user 정보가 있으면 Home 아니면 login페이지 이동 

login 페이지를 요청했을 시  user정보가 없으면 loign user 정보가 있으면 home

signup 페이지를 요청했을 시 user정보가 없으면 singup페이지 user 정보가 있으면 home

 

 

 

 

로그인 안했을 경우 home으로 가도 login 페이지로 이동한다. 

 

로그인 후 회원가입 페이지로 이동해봐도 home 페이지가 나옴