๐Ÿ’ซ Backend/Node

ยท๐Ÿ’ซ Backend/Node
์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ํšŒ์›๊ฐ€์ž…์‹œ์— ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ฉ”์ผ ์ธ์ฆ์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ์ฐพ์•„๋ณด๋˜์ค‘ Nodemailer๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐœ๊ฒฌํ•ด์„œ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! (Nodemailer๋Š” node.js์—์„œ email์„ ์‰ฝ๊ฒŒ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•ด์คŒ)  Nodemailer๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ผ gmail ๊ณ„์ •๊ณผ ํ•ด๋‹น gmail์˜ ์•ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค!   Google ๊ณ„์ • => ๋ณด์•ˆ => 2๋‹จ๊ณ„ ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ•œ ํ›„ ๊ฒ€์ƒ‰์ฐฝ์— ์•ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค    ์ด๋ ‡๊ฒŒ gmail ๊ณ„์ •๊ณผ ์•ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” .envํŒŒ์ผ์— ์ €์žฅํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์— npm i nodemailer๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์ฃผ๊ณ  const nodemailer = requiere("nodemailer")๋ฅผ ์ด์šฉํ•ด์„œ ๋ชจ๋“ˆ์„ importํ•˜๋ฉด..
ยท๐Ÿ’ซ Backend/Node
์ตœ๊ทผ์— Co-Code๋ผ๋Š” ์ฝ”๋”ฉ ๊ต์œก ํ”Œ๋žซํผ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋ฐฑ์—”๋“œ๋ฅผ ๋งก๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!! ๊ฐ€์žฅ ๋จผ์ € ํ•˜๊ฒŒ๋œ๊ฑด ์„œ๋ฒ„ ๋ฐฐํฌํ•˜๊ธฐ... ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค  ๊ฐ€์žฅ ๋จผ์ € EC2๋ถ€ํ„ฐ ์ƒ์„ฑํ•ด๋ณด์•˜๋‹ค!(์ œ ๋ธ”๋กœ๊ทธ AWS์— ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹ค์Šต์ด ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค) => Ubuntu๋ฅผ ์‚ฌ์šฉํ–ˆ์Œ!! (+ ํ”„๋ฆฌํ‹ฐ์–ด)  ํ‚คํŽ˜์–ด๋„ ๋งŒ๋“ค์–ด์„œ ์ž˜ ๋ณด๊ด€ํ•ด์ฃผ๊ณ !! ssh -i "pem ํŒŒ์ผ ์ด๋ฆ„" ubuntu@ec2-"ํผ๋ธ”๋ฆญ ip ์ฃผ์†Œ".ap-northeast-2.compute.amazonaws.com ์ด์ œ ์ž‘์—…์ค‘์ธ ํ™˜๊ฒฝ์—์„œ (์ €๋Š” vscode๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— vscode ํ„ฐ๋ฏธ๋„์„ ์ด์šฉํ–ˆ์Œ) pem ํŒŒ์ผ ์œ„์น˜๋กœ ์ด๋™ ํ›„ ์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ EC2 ์„œ๋ฒ„๋กœ ์ ‘์†ํ•œ๋‹ค   ๊ทธ๋Ÿฐ๋ฐPermissions for 'key.pe..
ยท๐Ÿ’ซ Backend/Node
์•Œ๊ฒŒ ๋ชจ๋ฅด๊ฒŒ cors ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Express.js์—์„œ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์™”๋Š”๋ฐ๋ฌธ๋“ ์ด๊ฒŒ ์ •ํ™•ํžˆ ๋ญ”์ง€ ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค..  CORS๋Š” Cross-Origin Resource Sharing์˜ ์•ฝ์ž๋กœ, ๋‹ค๋ฅธ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ ์— ๋Œ€ํ•œ ํ—ˆ์šฉ/๋น„ํ—ˆ์šฉ ์ •์ฑ…์ด๋‹ค=> ์ด ์ •์ฑ…์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค๋ฅธ ์ถœ์ฒ˜(Origin)๋กœ๋ถ€ํ„ฐ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ๋•Œ ์ ์šฉ๋จ ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Same-Origin Policy๋ฅผ ๋”ฐ๋ฅด๋ฉฐ, ์ด๋Š” ์Šคํฌ๋ฆฝํŠธ๋‚˜ ์Šคํƒ€์ผ ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค ์š”์ฒญ์ด๋™์ผํ•œ ์ถœ์ฒ˜์—์„œ ์˜จ ๊ฒƒ์ด์–ด์•ผ ํ•œ๋‹ค๋Š” ์ •์ฑ…์ด๋‹ค. (๋™์ผํ•œ ์ถœ์ฒ˜(Origin)๋ž€ ํ”„๋กœํ† ์ฝœ, ํ˜ธ์ŠคํŠธ, ํฌํŠธ๊ฐ€ ๋™์ผํ•œ ๊ฒƒ์„ ์˜๋ฏธ) https://www.naver.com:3000/ ๊ณผ ๊ฐ™์€ URL์ด ์žˆ๋‹ค๋ฉดhttps๊ฐ€ ํ”„๋กœํ† ์ฝœwww.nave..
ยท๐Ÿ’ซ Backend/Node
session ๋กœ๊ทธ์ธ๋งŒ ํ•ด์˜ค๋˜ ๋‚ด๊ฐ€ JWT๋ฅผ..? ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค~  JWT๋Š” JSON Web Tokens ์˜ ์ค„์ธ๋ง๋กœ ์›น์—์„œ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜์ด๋‹ค JSON ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”๋œ ๋ฌธ์ž์—ด๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ JWT๋Š” ํ† ํฐ ์ž์ฒด๊ฐ€ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด ๋ณ„๋„์˜ ์ €์žฅ ๊ณต๊ฐ„์ด ํ•„์š” ์—†๋‹ค! => ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์Œ ํ•˜์ง€๋งŒ, ์„ธ์…˜/์ฟ ํ‚ค ๋ฐฉ์‹์— ๋น„ํ•ด JWT ํ† ํฐ์˜ ๊ธธ์ด๊ฐ€ ๊ธธ๊ธฐ ๋•Œ๋ฌธ์— ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐ ๊ฒ€์ฆ ์š”์ฒญ์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ์„œ๋ฒ„์—์„œ ์ž์› ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค JWT๋Š”  Header, Payload, Signature ์„ธ ๊ฐ€์ง€ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค Header๋Š” ํ† ํฐ์˜ ์œ ํ˜•๊ณผ ํ† ํฐ์„ ์„œ๋ช…ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์ •ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ถ€๋ถ„์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค Paylo..
ยท๐Ÿ’ซ Backend/Node
๊ทธ๋™์•ˆ MySQL์„ ์ด์šฉํ•ด ๊ฐœ๋ฐœํ•  ๋•Œ Sequelize๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ๋Š”๋ฐ์ด๋ฒˆ์— ์ง„ํ–‰์ค‘์ธ Node.js ํ”„๋กœ์ ํŠธ์—์„œ TypeORM์„ ์ฒ˜์Œ ์‚ฌ์šฉํ•ด๋ด์„œ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค..  ์šฐ์„  ORM์ด ๋ญ”์ง€๋ถ€ํ„ฐ ์•Œ์•„๋ด์•ผํ•˜๋Š”๋ฐ ORM์ด๋ž€ Object-Relational Mapping์˜ ์•ฝ์ž๋กœ, ๊ฐ์ฒด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ๋งคํ•‘์„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค (๊ฐœ๋ฐœ์ž๊ฐ€ SQL ์ฟผ๋ฆฌ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์คŒ)  ๊ทธ๋Ÿผ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋˜ ๋ญ๋ƒ,,,? ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ” ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๊ณ , ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์งํ™”ํ•˜๋Š”๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ด๋‹ค.=> ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์— ๊ธฐ๋ฐ˜ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ํ–‰๊ณผ ์—ด์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•จ! ์ด๋Ÿฐ ๊ด€๊ณ„ํ˜• ..
JJunGyo
'๐Ÿ’ซ Backend/Node' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก