๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กNode.js (4)

<Hello Hosung๐Ÿ˜Ž/>

[Node.js] OAuth2 ๋กœ๊ทธ์ธ - 2(Google Login)

๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด, OAuth 2.0 ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ Google API์™€ ์—ฐ๋™ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” Node.js + Express ๊ธฐ๋ฐ˜์˜ ๊ฐ„๋‹จํ•œ Google ๋กœ๊ทธ์ธ ๊ตฌํ˜„ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.์‚ฌ์ „ ์ค€๋น„Google Cloud Console์—์„œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑGoogle Cloud Console์— ์ ‘์†.์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒ.OAuth ๋™์˜ ํ™”๋ฉด ์„ค์ •:์‚ฌ์šฉ์ž ์œ ํ˜• ์„ ํƒ(์™ธ๋ถ€/๋‚ด๋ถ€).ํ•„์ˆ˜ ์ •๋ณด ์ž…๋ ฅ(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„, ์ด๋ฉ”์ผ ๋“ฑ).OAuth 2.0 ํด๋ผ์ด์–ธํŠธ ID ์ƒ์„ฑ:์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์œ ํ˜•: ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ ํƒ.์Šน์ธ๋œ ๋ฆฌ๋””๋ ‰์…˜ URI ์ถ”๊ฐ€: ์˜ˆ) http://localhost:3000/auth/google/callbackํด๋ผ์ด์–ธํŠธ ID์™€ ํด๋ผ์ด์–ธํŠธ ๋น„๋ฐ€ ํ‚ค(Client Secret)๋ฅผ ๋ณต์‚ฌ..

[Node.js] bcrypt ๋กœ ํšŒ์›๊ฐ€์ž… ๊ตฌํ˜„ํ•˜๊ธฐ

ํšŒ์›๊ฐ€์ž… ์‹œ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ˆ˜์ง‘ํ•œ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋•Œ ์ฃผ์˜ํ•  ์ ์€ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜์ง€ ์•Š๊ณ  ํ‰๋ฌธ ๊ทธ๋Œ€๋กœ ์ €์žฅํ•  ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์œ ์ถœ๋˜๋ฉด, ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ํ‰๋ฌธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด ์†์‰ฝ๊ฒŒ ๋กœ๊ทธ์ธํ•˜๊ฑฐ๋‚˜ ๋‹ค์–‘ํ•œ ๊ณต๊ฒฉ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์•”ํ˜ธํ™”(ํ•ด์‹ฑ) ๊ณผ์ •์„ ๊ฑฐ์ณ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด์‹ฑ์„ ํ†ตํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ ์ถœ ์‹œ์—๋„ ๋น„๋ฐ€๋ฒˆํ˜ธ ์›๋ฌธ์ด ์•„๋‹Œ ํ•ด์‹œ๊ฐ’์ด ๋…ธ์ถœ๋˜๋ฏ€๋กœ ๋ณด์•ˆ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  ์˜ค๋Š˜ ํฌ์ŠคํŒ…์€ bcrypt ๋ผ์ด๋ธŒ๋Ÿฌ๋ฅผ ํ™œ์šฉํ•œ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ, ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.   1) Node.js ํ”„๋กœ์ ํŠธ์— bcrypt๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ..

[Node.js] Express ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž

์˜ค๋Š˜์€ Express ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค ๐Ÿ˜Š๋งŒ๋“ค๊ธฐ์— ์•ž์„œ Express๊ฐ€ ๋ฌด์—‡์ธ๊ณ  ์•Œ์•„๋ณด๋ฉด ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์™€ ์žˆ์–ด์š”   ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ ๋ฐ”๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ์—์š”, ์‰ฝ๊ฒŒ ๋งํ•ด Java ๊ณ„์—ด์—๋Š” Spring, SpringBoot ๋“ฑ์ด ์กด์žฌํ•˜๋“ฏ Node.js๋ฅผ ํ†ตํ•ด ์›น ์„ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋ฐ”๋กœ Express ์ž…๋‹ˆ๋‹ค.    ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•œ Express ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค. 1. ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐํ™”๋จผ์ € Express ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•  ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ์•ˆ์—์„œ Node.js ํ”„๋กœ์ ํŠธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.mkdir express-servercd express-servernpm init -y # package.json ํŒŒ์ผ ์ž๋™ ์ƒ์„ฑ 2. E..

[Node.js] Node.js(Express) ↔๏ธŽ MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๐Ÿ“ฆ ์—ฐ๋™ํ•˜๊ธฐ

์ด๋ฒˆ์—” Node.js ์™€ MySQL ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™๊ณผ ๋˜ํ•œ mybatis-mapper ๋ฅผ ํ™œ์šฉ ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋˜ํ•œ ์•Œ์•„ ๋ณด๋„๋ก ํ•ด์š”๐Ÿ˜€ ๋จผ์ € ์•„๋ž˜์™€ ๊ฐ™์ด ๋„์ปค ํ™˜๊ฒฝ์— MySQL ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์˜ฌ๋ผ ๊ฐ”๋‹ค๊ณ  ๊ฐ€์ • ํ•ด๋ด…์‹œ๋‹ค! (๋„์ปค๋ฅผ ํ†ตํ•ด MySQL DB ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ด์š”) ↓ ↓ ↓ 2024.08.18 - [๐Ÿณ Docker] - [Docker] ๋„์ปค๋กœ MySQL DB๐Ÿ“ฆ ์„œ๋ฒ„ ๋งŒ๋“ค์–ด๋ณด๊ธฐ ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด Node.js๋กœ ์ž‘์„ฑํ•œ Express ์„œ๋ฒ„๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณผ๊ฒŒ์š”. Express๋Š” Node.js๋ฅผ ์œ„ํ•œ ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์š”. ๐Ÿง ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ํŠนํžˆ REST API๋‚˜ ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ..