React ๊ธฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ํน์ ํ์ด์ง์ ๋ก๊ทธ์ธ ์ ์ ๋ง ์ ๊ทผํ ์ ์๋๋ก ์ค์ ํ๋ <Protected Route> ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด๋ณด์๋ค.
Protected Route๋ ์ธ์ฆ๋ ์ฌ์ฉ์๋ง ์ ๊ทผํ ์ ์๋ ๊ฒฝ๋ก(Route), ํน์ ๊ทธ๊ฒ์ ๊ตฌํํ๋ ๋ฐฉ์์ ๋งํ๋ค.
์ฐ๋ฆฌ๊ฐ ์ด๋ค ์ฌ์ดํธ๋ฅผ ์ด์ฉํ๋ค ๋ณด๋ฉด ํน์ ์๋น์ค๋ฅผ ์ด์ฉํ๊ธฐ ์ํด ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋ก๊ทธ์ธ ํ ์ด์ฉํด๋ฌ๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ๋ณธ ์ ์ด ์์ ๊ฒ์ด๋ค. ๋ก๊ทธ์ธ ํ ์ ์ ๋ผ๋ฉด ํด๋น ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๋ ํ์ด์ง๋ก ๋ฐ๋ก ์ด๋ํ ์ ์๊ฒ ์ง๋ง, ๋ก๊ทธ์ธ ํ์ง ์์ ์ ์ ๋ค์ ์ด์ฉํ ์ ์๋๋ก ๋ณดํธํด ๋ ๊ฒ์ด๋ค.
์ด์ฒ๋ผ ํน์ ํ์ด์ง๋ฅผ ์ธ์ฆ๋ ์ฌ์ฉ์, ์ฆ ๋ก๊ทธ์ธ์ ์๋ฃํ ์ ์ ๋ง ์ด์ฉ๊ฐ๋ฅํ๋๋ก ์ค์ ํ๋ ๊ฒ์ ๋ณดํธ๋ ๋ฃจํธ ์ฆ, Protected Route๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ณดํต ์ ์ ์ ์ธ์ฆ ์ํ๋ฅผ ํ์ธํ ํ, ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์์ผ๋ฉด ํ์ด๋ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธํจ์ผ๋ก์จ ๋น์ธ์ฆ ์ ์ ์ ์ ๊ทผ์ ์ ํํ๋ค.
์ธ์ฆ ์ฌ๋ถ๋ฅผ ํ์ธํ์ฌ ์์ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๊ฒ๋ ๋ง๋๋ ProtectedRoute ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ ๊ธฐ์กด์ Router์ ํ์ฉํ๋ฉด ๋๋ค.
<ProtectedRoute> ์ปดํฌ๋ํธ ์์ฑ
๋ก๊ทธ์ธ, ํ์๊ฐ์
์์ ์
๋ฐ์ดํธ ๋๋ ์ํ๊ฐ isLoginUser๋ฅผ ์ด์ฉํด ๋ก๊ทธ์ธ ์ํ๊ฐ ์๋๋ผ๋ฉด react-router-dom์ Navigate ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ์ฌ ๋ฉ์ธํ์ด์ง์ธ '/'๋ก ์ด๋ํ๋๋ก ์ค์ ํ๋ค.
replace ์์ฑ์ ์ด์ฉํด ๋ฆฌ๋ค์ด๋ ์
์ ํ์คํ ๋ฆฌ ์คํ์ ํ์ฌ ํ์ด์ง๋ฅผ ๋จ๊ธฐ์ง ์๊ณ ๋์ฒดํ๋ค. ๋ค์ ๋งํด, ๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ ์ ๋, ๋ฐฉ๊ธ ์ ๋ฐฉ๋ฌธํ๋ ํ์ด์ง๊ฐ ์๋ ๊ทธ ์ด์ ์ ํ์ด์ง๋ก ๋์๊ฐ๋ค.
Router ์ค์ 
ํ์ด์ง ๋ฃจํธ๋ฅผ ์ค์ ํ๋ Router ํ์ผ์์ ์๋์ ๊ฐ์ด <ProtectedRoute> ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฌ์ ๋ณดํธํด์ผ ํ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ธ์ ์ฌ์ฉํ๋ค.

๋ด๊ฐ ๊ตฌํ ์ค์ธ ์ฌ์ดํธ์์๋ ํ์๊ฐ์
ํ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ด Nav์ ํ์๋๊ณ , ๋ก๊ทธ์์ ์ ํด๋น ๋ฒํผ์ด ์ฌ๋ผ์ง๋ค. ํ๋ฉด์ ์ผ๋ก๋ <ProtectedRoute>๊ฐ ํ์ ์์ด ๋ณด์ผ ์ ์๋ค. ํ์ง๋ง ํ์ด์ง ๋งํฌ๋ฅผ ํตํด ์ง์ ์ ๊ทผํ๊ฑฐ๋ ๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ ์ ๋, ๋ก๊ทธ์์ ์ํ์์๋ ํด๋น ํ์ด์ง์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ <ProtectedRoute> ์ค์ ์ด ๋ฐ๋์ ํ์ํ๋ค.
์ฐธ๊ณ ์ฌ์ดํธ : https://velog.io/@frontendohs/React%EB%A1%9C-Protected-Router-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0