๐Ÿ“šย Protected Route

blueminยท2024๋…„ 11์›” 26์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
9/9

React ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํŠน์ • ํŽ˜์ด์ง€์— ๋กœ๊ทธ์ธ ์œ ์ €๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜๋Š” <Protected Route> ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์•˜๋‹ค.


Protected Route ๋ž€?

Protected Route๋ž€ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ(Route), ํ˜น์€ ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ•˜๋‹ค ๋ณด๋ฉด ํŠน์ • ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๋กœ๊ทธ์ธ ํ›„ ์ด์šฉํ•ด๋‹ฌ๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ๋ณธ ์ ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๋กœ๊ทธ์ธ ํ•œ ์œ ์ €๋ผ๋ฉด ํ•ด๋‹น ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๋กœ ๋ฐ”๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ๋กœ๊ทธ์ธ ํ•˜์ง€ ์•Š์€ ์œ ์ €๋“ค์€ ์ด์šฉํ•  ์ˆ˜ ์—†๋„๋ก ๋ณดํ˜ธํ•ด ๋‘” ๊ฒƒ์ด๋‹ค.

์ด์ฒ˜๋Ÿผ ํŠน์ • ํŽ˜์ด์ง€๋ฅผ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž, ์ฆ‰ ๋กœ๊ทธ์ธ์„ ์™„๋ฃŒํ•œ ์œ ์ €๋งŒ ์ด์šฉ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๋ณดํ˜ธ๋œ ๋ฃจํŠธ ์ฆ‰, Protected Route๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

๋ณดํ†ต ์œ ์ €์˜ ์ธ์ฆ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ ํ›„, ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ํ™ˆ์ด๋‚˜ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•จ์œผ๋กœ์จ ๋น„์ธ์ฆ ์œ ์ €์˜ ์ ‘๊ทผ์„ ์ œํ•œํ•œ๋‹ค.

๊ตฌํ˜„ ๋ฐฉ๋ฒ•

์ธ์ฆ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์—ฌ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๊ฒŒ๋” ๋งŒ๋“œ๋Š” ProtectedRoute ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฅผ ๊ธฐ์กด์˜ Router์— ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค.


1. <ProtectedRoute> ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ

๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž… ์‹œ์— ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์ƒํƒœ๊ฐ’ isLoginUser๋ฅผ ์ด์šฉํ•ด ๋กœ๊ทธ์ธ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด react-router-dom์˜ Navigate ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ”์ธํŽ˜์ด์ง€์ธ '/'๋กœ ์ด๋™ํ•˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค.

replace ์†์„ฑ์„ ์ด์šฉํ•ด ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์‹œ ํžˆ์Šคํ† ๋ฆฌ ์Šคํƒ์— ํ˜„์žฌ ํŽ˜์ด์ง€๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  ๋Œ€์ฒดํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ, ๋ฐฉ๊ธˆ ์ „ ๋ฐฉ๋ฌธํ–ˆ๋˜ ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹Œ ๊ทธ ์ด์ „์˜ ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐ„๋‹ค.


2. 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
profile
์„ฑ์žฅํ•˜๋Š” ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

0๊ฐœ์˜ ๋Œ“๊ธ€