์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[์ธ์ฆ ๊ธฐ๋Šฅ] HOC

๋ณธ๋ฌธ

์‹œ์ž‘์ 

Auth(HOC)

๋ฐฑ์—”๋“œ์— ์š”์ฒญ์„ ๋ณด๋ƒ„ (ํ˜„์žฌ ๋ Œ๋”ฉ ํŽ˜์ด์ง€์— ๋“ค์–ด์™€ ์žˆ๋Š” ์‚ฌ๋žŒ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ- ๋กœ๊ทธ์ธ ๋œ ์œ ์ €, ์–ด๋“œ๋ฏผ ์œ ์ €,....)

 

HOC (auth)๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„์ด ๋˜์–ด ์žˆ๋‚˜

<client>

1. client/src/hoc/auth.js

dispatch(auth())๋ฅผ ํ†ตํ•ด dispatch๋กœ action auth๋ฅผ ์š”์ฒญํ•œ๋‹ค.

2. client/src/redux/_actions/index.js

auth()๋ผ๋Š” ์•ก์…˜์„ ์ •์˜ํ•ด ๋†“์•˜๋‹ค.

3. client/src/redux/_reducer/index.js

dispatcher๋กœ ์ธํ•ด์„œ AUTH_USER์˜ state๊ฐ€ ์•„๋ž˜ ์ •์˜๋œ ๋ฐ”์™€ ๊ฐ™์ด ๋ฐ”๋€๋‹ค.

<server>

1. /server/routes/users.js

ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญ์ด ์˜ค๋ฉด, auth ๋ฏธ๋“ค์›จ์–ด ๋จผ์ € ๊ฐ„๋‹ค.

2. /server/middleware/auth.js

์ด๊ณณ์„ ํ†ต๊ณผ ํ•˜์˜€๋‹ค๋ฉด, ์˜ฌ๋ฐ”๋ฅธ auth๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ

 

<client>์˜ src/hoc/auth๋กœ ๋Œ์•„๊ฐ€์„œ

isAuth๊ฐ€ False (๋กœ๊ทธ์ธ ์•ˆํ•œ ์ƒํƒœ) ๋ผ๋ฉด ๋กœ๊ทธ์ธํŽ˜์ด์ง€ ํ˜น์€ ๊ธฐ๋ณธ ํŽ˜์ด์ง€๋กœ ๋ณด๋‚ด๊ณ 

 

isAuth๊ฐ€ True (๋กœ๊ทธ์ธํ•œ ์ƒํƒœ) + isAdmin (๊ถŒํ•œ)์ด ์˜ฌ๋ฐ”๋ฅด๋‹ค๋ฉด, ํ•ด๋‹นํŽ˜์ด์ง€๋กœ ๋ณด๋‚ด๊ณ 

์•„๋‹ˆ๋ผ๋ฉด, ๋กœ๊ทธ์ธ ์งํ›„์˜ ํŽ˜์ด์ง€(/classes)๋กœ ๋ณด๋‚ธ๋‹ค.

 

728x90

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ