๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ๏ธ 21-2 IPP/Node.js study

Node.js - 18 ์„ธ์…˜๊ณผ ํ”Œ๋ž˜์‹œ ๋ฉ”์‹œ์ง€, ์‚ฌ์šฉ์ž ๊ณ„์ • ์ธ์ฆ

by hanwitjus 2021. 11. 8.

์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” soundy ํ”„๋กœ์ ํŠธ์—์„œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๋จผ์ € ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฑ… ๋‚ด์šฉ์„ ์กฐ๊ธˆ ๋›ฐ์–ด ๋„˜์–ด์„œ ์‚ฌ์šฉ์ž ๊ณ„์ • ์ธ์ฆ ๋ถ€๋ถ„๋ถ€ํ„ฐ ๊ณต๋ถ€ํ•˜๊ณ ์žˆ๋‹ค.

 

 

ํ”Œ๋ž˜์‹œ ๋ฉ”์‹œ์ง€ ๋ชจ๋“ˆ ์„ค์ •

 

ํ”Œ๋ž˜์‹œ ๋ฉ”์‹œ์ง€(Flash Message)

: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐ˜์˜๊ตฌ ๋ฐ์ดํ„ฐ

  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์— ์ƒ์„ฑ๋ผ ์„ธ์…˜์˜ ์ผ๋ถ€๋กœ์„œ ์‚ฌ์šฉ์ž ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌ๋œ๋‹ค.

 

npm i connect-flash -S

npm i cookie-parser express-session -S 

์œผ๋กœ connect-flash ๋ฏธ๋“ค์›จ์–ด์™€ cookie-parser์™€ express-session ํŒจํ‚ค์ง€๋„ ์„ค์น˜ํ•œ๋‹ค.

 

  • connect-flash: ํ”Œ๋ž˜์‹œ ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • express-session: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์— ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • cookie-parser: ๋ธŒ๋ผ์šฐ์ €์—์„œ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ๋˜๋Š” ์ฟ ํ‚ค๋ฅผ ์„ธ์…˜์—์„œ ํ•ด์„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

 

 

์„ค์น˜๋ฅผ ๋งˆ์น˜๋ฉด main.js์— ์ด๋ ‡๊ฒŒ ์„ ์–ธํ•œ๋‹ค.

 

main.js

29ํ–‰๋ถ€ํ„ฐ 31ํ–‰๊นŒ์ง€๋Š” 3๊ฐ€์ง€ ๋ชจ๋“ˆ์„ ์š”์ฒญํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

33ํ–‰์€ Express.js์— ๋ฏธ๋“ค์›จ์–ด๋กœ์„œ cookie-parser๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋น„๋ฐ€์•”ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ ์–ธํ•œ๋‹ค.

๊ทธ๋‹ค์Œ์œผ๋กœ 34ํ–‰์— express-session ์„ ์–ธ์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ์Šคํ† ๋ฆฌ์ง€ ๋ฉ”์†Œ๋“œ๋กœ cookie-parser๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , 1์‹œ๊ฐ„ํ›„ ์„ธ์…˜์„ ๋งŒ๋ฃŒ์‹œํ‚ค๋„๋ก ์„ค์ •ํ–ˆ๋‹ค.

 

๋˜ํ•œ saveUninitialized ์†์„ฑ์„ false๋กœ ์„ค์ •ํ•ด ๋ฉ”์‹œ์ง€๊ฐ€ ์„ธ์…˜์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด๋‚ด์ง€ ์•Š๋„๋ก ์ง€์ •ํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ connect-flash๋ฅผ ๋ฏธ๋“ค์›จ์–ด๋กœ ์‚ฌ์šฉํ•˜๋„๋กํ•œ๋‹ค.

 

 

์ด๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ์—ˆ๋Š”๋ฐ ๋ฐ”๋ณด๊ฐ™์ด ์ปจํŠธ๋กค๋Ÿฌ์—์„œ๋Š” req.flash() ์ด๋Ÿฐ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด๋†“๊ณ  ๋ฉ”์ธ์— ์ €๋ ‡๊ฒŒ ์„ ์–ธ์„ ์•ˆํ•ด์„œ ์ƒ๊ฒผ๋˜ ๊ฑฐ์˜€๋‹ค. ^_^

 

 

 

 

์ปจํŠธ๋กค๋Ÿฌ ์•ก์…˜์— ํ”Œ๋ž˜์‹œ ๋ฉ”์‹œ์ง€ ์ถ”๊ฐ€

 

ํ”Œ๋ž˜์‹œ ๋ฉ”์‹œ์ง€๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์„ฑ๊ณต ๋˜๋Š” ์‹คํŒจ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ฐ ์ œ์ผ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ผ ๊ฒƒ ๊ฐ™๋‹ค.

 

ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต/์‹คํŒจ ์—ฌ๋ถ€ ๋ถ€ํ„ฐ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋ ˆ์‹œ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ,

 

๋จผ์ €

์ฑ…์— ๋‚˜์™€์žˆ๋Š”๋Œ€๋กœ 

์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์งฐ๋”๋‹ˆ ์ž˜ ์•ˆ๋๋‹ค...

 

๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ render ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ

 

 

flashMessages๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„˜๊ฒจ์คฌ๋‹ค.

 

 

 

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ๊ฒฐ๊ณผ๊ฐ€ ์„ฑ๊ณต/์‹คํŒจ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ž˜ ๋‚˜์˜จ๋‹ค.

 

 

 

์‚ฌ์šฉ์ž ๊ณ„์ • ์ธ์ฆ

 

๊ฐ„๋‹จํ•˜๊ฒŒ DB์— ์ €์žฅ๋œ ์‚ฌ์šฉ์ž์˜ id/password ์ •๋ณด์™€ ํผ์— ์ž…๋ ฅ๋œ id/password๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋กœ๊ทธ์ธ ์„ฑ๊ณต/์‹คํŒจ๋ฅผ ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๊ณต๋ถ€ํ•ด๋ดค๋‹ค.

 

๋กœ๊ทธ์ธ์ด ์„ฑ๊ณตํ–ˆ๋Š”์ง€ ์‹คํŒจํ–ˆ๋Š”์ง€๋Š” ํ”Œ๋ž˜์‹œ ๋ฉ”์‹œ์ง€๋กœ ์•Œ๋ ค์ค€๋‹ค.

 

๋จผ์ € ๋กœ๊ทธ์ธ ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” userController.js ์ด๋‹ค.

9ํ–‰์„ ๋ณด๋ฉด ์ผ๋‹จ findOne์œผ๋กœ ํ•ด๋‹น id๋ฅผ ๊ฐ€์ง„ ์œ ์ €๊ฐ€ ์žˆ๋Š”์ง€ ๊ฒ€์ƒ‰ํ•˜๊ณ , ์žˆ๋‹ค๋ฉด ๊ทธ ์œ ์ €์˜ password๋ฅผ ๊ฐ€์ ธ์™€ ํผ์— ์ž…๋ ฅ๋œ password์™€ ๋น„๊ตํ•œ๋‹ค. ๊ฐ™์œผ๋ฉด ๋กœ๊ทธ์ธ ๋˜์—ˆ๋‹ค๋Š” flashMessage๋ฅผ ๋ณด๋‚ด๊ณ , ์‹คํŒจํ•˜๋ฉด ์‹คํŒจ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค.

(์—ฌ๊ธฐ์„œ๋Š” equal ๋น„๊ต ๊ธฐํ˜ธ๊ฐ€ === ์„ธ๊ฐœ์˜€๋‹ค...)

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฒฐ๊ณผ๋Š”

์ด๋Ÿฐ์‹์œผ๋กœ ์ž˜ ๋‚˜์˜จ๋‹ค.

 

 

 

 

 

LIST

๋Œ“๊ธ€