카테고리 없음
[React / Private Route] 사용자 인증 인가 접근 처리
minhe2810
2024. 6. 11. 11:21
import React, { useContext } from "react";
import { UserObjContext } from "../context/UserObjContext";
import { Navigate, Outlet, Routes } from "react-router-dom";
export default function PrivateRoute({ component: Component, ...rest }) {
const { authData } = useContext(UserObjContext);
// 로그인 상태를 확인하는 로직
const isAuthenticated = localStorage.getItem("userId") !== null;
console.log("isAuthenticated : ", isAuthenticated);
return (
<>
isAuthenticated ? (
<Routes {...rest} element={<Outlet />} />
) : (
<Navigate to="/login" state={{ from: rest.location }} replace />
);
</>
);
}
function App() {
return (
<>
<UserContextProvider>
<BrowserRouter>
<Routes>
{/* 중첩 라우팅 : 레이아웃 필요 컴포넌트들 */}
<Route path="/" element={<Layout />}>
<Route index element={<BoardTables />} />
<Route path=":id" element={<BoardTables />} />
<Route path="/detail/:boardId" element={<BoardDetail />} />
{/*로그인한 사용자만 접근 가능하도록 처리*/}
<Route element={<PrivateRoute />}>
<Route path="/write" element={<BoardWrite />} />
</Route>
</Route>
<Route path="/join" element={<JoinForm />} />
<Route path="/login" element={<LoginForm />} />
</Routes>
</BrowserRouter>
</UserContextProvider>
</>
);
}
export default App;