์ด๋ฒ ํ๋ก์ ํธ์์ ํ์๊ฐ์
์์ ์ฌ์ฉ์์๊ฒ ์ด๋ฉ์ผ ์ธ์ฆ์ ๋ฐ๊ธฐ ์ํด ์ฐพ์๋ณด๋์ค Nodemailer๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ๊ฒฌํด์ ์ฌ์ฉํด๋ณด๊ฒ ์ต๋๋ค! (Nodemailer๋ node.js์์ email์ ์ฝ๊ฒ ๋ณด๋ผ ์ ์๋ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํด์ค) Nodemailer๋ฅผ ์ฌ์ฉํ ๋ ์ด๋ฉ์ผ์ ๋ณด๋ผ gmail ๊ณ์ ๊ณผ ํด๋น gmail์ ์ฑ ๋น๋ฐ๋ฒํธ๊ฐ ํ์ํ๋ค! Google ๊ณ์ => ๋ณด์ => 2๋จ๊ณ ์ธ์ฆ์ ํ์ฑํํ ํ ๊ฒ์์ฐฝ์ ์ฑ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ฒ์ํด์ ์์ฑํ ์ ์๋ค ์ด๋ ๊ฒ gmail ๊ณ์ ๊ณผ ์ฑ ๋น๋ฐ๋ฒํธ๋ .envํ์ผ์ ์ ์ฅํด์ฃผ์์ต๋๋ค. ํฐ๋ฏธ๋์ npm i nodemailer๋ฅผ ์ด์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํด์ฃผ๊ณ const nodemailer = requiere("nodemailer")๋ฅผ ์ด์ฉํด์ ๋ชจ๋์ importํ๋ฉด..
์ต๊ทผ์ 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..
์๊ฒ ๋ชจ๋ฅด๊ฒ cors ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด Express.js์์ ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํด์๋๋ฐ๋ฌธ๋ ์ด๊ฒ ์ ํํ ๋ญ์ง ๊ถ๊ธ์ฆ์ด ์๊ฒผ์ต๋๋ค.. CORS๋ Cross-Origin Resource Sharing์ ์ฝ์๋ก, ๋ค๋ฅธ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ ์ ๋ํ ํ์ฉ/๋นํ์ฉ ์ ์ฑ
์ด๋ค=> ์ด ์ ์ฑ
์ ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ค๋ฅธ ์ถ์ฒ(Origin)๋ก๋ถํฐ ๋ฆฌ์์ค์ ์ ๊ทผํ ๋ ์ ์ฉ๋จ ๋ธ๋ผ์ฐ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก Same-Origin Policy๋ฅผ ๋ฐ๋ฅด๋ฉฐ, ์ด๋ ์คํฌ๋ฆฝํธ๋ ์คํ์ผ ๋ฑ์ ๋ฆฌ์์ค ์์ฒญ์ด๋์ผํ ์ถ์ฒ์์ ์จ ๊ฒ์ด์ด์ผ ํ๋ค๋ ์ ์ฑ
์ด๋ค. (๋์ผํ ์ถ์ฒ(Origin)๋ ํ๋กํ ์ฝ, ํธ์คํธ, ํฌํธ๊ฐ ๋์ผํ ๊ฒ์ ์๋ฏธ) https://www.naver.com:3000/ ๊ณผ ๊ฐ์ URL์ด ์๋ค๋ฉดhttps๊ฐ ํ๋กํ ์ฝwww.nave..
session ๋ก๊ทธ์ธ๋ง ํด์ค๋ ๋ด๊ฐ JWT๋ฅผ..? ๋ฐ๋ก ์์ํ๊ฒ ์ต๋๋ค~ JWT๋ JSON Web Tokens ์ ์ค์ธ๋ง๋ก ์น์์ ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ์ ์กํ๊ธฐ ์ํ ํ์ค ๋ฐฉ์ ์ค ํ๋์ด๋ค JSON ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ณด๋ฅผ ์ํธํ๋ ๋ฌธ์์ด๋ก ํํํ๋ฉฐ JWT๋ ํ ํฐ ์์ฒด๊ฐ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์์ด ๋ณ๋์ ์ ์ฅ ๊ณต๊ฐ์ด ํ์ ์๋ค! => ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ํ๋ฅผ ์ ์งํ์ง ์์ ํ์ง๋ง, ์ธ์
/์ฟ ํค ๋ฐฉ์์ ๋นํด JWT ํ ํฐ์ ๊ธธ์ด๊ฐ ๊ธธ๊ธฐ ๋๋ฌธ์ ํ ํฐ ๋ฐ๊ธ ๋ฐ ๊ฒ์ฆ ์์ฒญ์ด ๋ง์์ง์๋ก ์๋ฒ์์ ์์ ๋ญ๋น๊ฐ ๋ฐ์ํ๋ค๋ ๋จ์ ์ด ์๋ค JWT๋ Header, Payload, Signature ์ธ ๊ฐ์ง ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค Header๋ ํ ํฐ์ ์ ํ๊ณผ ํ ํฐ์ ์๋ช
ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ํ๋ ๋ ๊ฐ์ง ๋ถ๋ถ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค Paylo..
๊ทธ๋์ MySQL์ ์ด์ฉํด ๊ฐ๋ฐํ ๋ Sequelize๋ฅผ ์ฌ์ฉํ์๋๋ฐ์ด๋ฒ์ ์งํ์ค์ธ Node.js ํ๋ก์ ํธ์์ TypeORM์ ์ฒ์ ์ฌ์ฉํด๋ด์ ๊ณต๋ถ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค.. ์ฐ์ ORM์ด ๋ญ์ง๋ถํฐ ์์๋ด์ผํ๋๋ฐ ORM์ด๋ Object-Relational Mapping์ ์ฝ์๋ก, ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ๋งคํ์ ์ ๊ณตํ๋ ๊ธฐ์ ์ด๋ค (๊ฐ๋ฐ์๊ฐ SQL ์ฟผ๋ฆฌ๋ฅผ ์ง์ ์์ฑํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃฐ ์ ์๊ฒ ๋์์ค) ๊ทธ๋ผ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ ๋ญ๋,,,? ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ํ
์ด๋ธ ํ์์ผ๋ก ์ ์ฅํ๊ณ , ํ
์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์กฐ์งํํ๋๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ด๋ค.=> ์ด๋ฌํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ด๊ณํ ๋ชจ๋ธ์ ๊ธฐ๋ฐํ๊ณ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ํ๊ณผ ์ด์ ํํ๋ก ํํํ๋ ํ
์ด๋ธ์ ์ฌ์ฉํจ! ์ด๋ฐ ๊ด๊ณํ ..