๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/Code-States

[D+134] Final Project : 14์ผ์ฐจ JWT(JSON Web Token)

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2021. 3. 3.

 

 

D+134

-  Final Project : 14์ผ์ฐจ -

( JWT ํ† ํฐ ์‹œ์ž‘ํ•˜๊ธฐ )

 


 

 

์˜ค๋Š˜์€ ์ธ์ฆ์„ ์œ„ํ•ด์„œ JWT ํ† ํฐ์„ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณค์œผ๋ฉฐ,

์•„์ง ์ฝ”๋“œ๋ฅผ 100% ๋งŒ์กฑํ•œ ์ƒํƒœ๋กœ ์ž‘์„ฑํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋ผ์„œ ์•„์ง ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ•œ ์ฝ”๋“œ๋ผ ๋ˆˆ์•ž์—์„œ ์•„๋ฅธ๊ฑฐ๋ฆฐ๋‹ค.

 

์ผ๋‹จ ๋ฐฑ์—”๋“œ์—์„œ ๊ฐ€์žฅ ๊ณ ๋ฏผํ–ˆ๋˜๊ฑด ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ๋งŒ๋“ค์–ด์ฃผ๋ƒ ์•„๋‹ˆ๋ƒ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ๋งŽ์•˜๋‹ค.

 

๋‚˜๋Š” ์ด์ „์— ์ฒซ ํ”„๋กœ์ ํŠธ์—์„œ JWT๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ๋Š” ํ–ˆ์ง€๋งŒ

์•ก์„ธ์Šค ํ† ํฐ ํ•˜๋‚˜๋กœ๋งŒ ํ† ํฐ์„ ์‚ฌ์šฉํ•ด๋ณด์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌํ”„๋ ˆ์‹œ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์กฐ๊ธˆ ๋ง‰๋ง‰ํ•œ ์ƒํƒœ์˜€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ ๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ˆ ๋ฆฌํ”„๋ ˆ์‹œ๋Š” ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ 

์•„๋‹ˆ๋ฉด ์•ก์„ธ์Šคํ† ํฐ ํ•˜๋‚˜๋กœ ํ† ํฐ์„ ๊ฐฑ์‹ ํ•œ๋‹ค๋Š” ๋‚ด์šฉ์„ ๋ณด๊ณ  

ํŒ€์›๋ถ„๊ป˜ ์•ก์„ธ์Šคํ† ํฐ ํ•˜๋‚˜๋กœ ์ง„ํ–‰ํ•ด๋ณด๋Š”๊ฒŒ ์–ด๋–ป๊ฒ ๋ƒ๋ผ๋Š” ์˜๊ฒฌ์„ ์ œ์‹œํ–ˆ์—ˆ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ํŒ€์›๋ถ„๊ป˜์„œ๋Š” ์ด์ „ ํ”„๋กœ์ ํŠธ๋•Œ ์„ธ์…˜์„ ํ™œ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์…จ๊ณ ,

์ด๋ฒˆ์— ์ฒ˜์Œ์œผ๋กœ ํ† ํฐ์„ ์‚ฌ์šฉ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ์ด์™• ํ•˜๋Š”๊ฑฐ ์ •์„๋Œ€๋กœ ์ง„ํ–‰ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ๋ง์”€์„ ํ•ด์ฃผ์…จ๊ณ 

์‚ฌ์‹ค ๋‚˜๋„ ์•ฝ๊ฐ„ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ๋ง‰์—ฐํžˆ ํšŒํ”ผํ•œ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•œ ๋Š๋‚Œ์ด ์—†์ง€์•Š์•„์„œ

์ด๋ฒˆ์„ ๊ณ„๊ธฐ๋กœ ์ œ๋Œ€๋กœ ํ•ด๋ณด์ž๋Š” ๊ฒฐ์‹ฌ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

์ผ๋‹จ jwt ์ธ์ฆ์„ ์œ„ํ•ด ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— jwt๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

๋กœ๊ทธ์ธ API์— jwt๋ฅผ require์„ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

 

๊ทธ ์ดํ›„์— jwt๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ๋Š”๋ฐ ์ด๋•Œ ์•ก์„ธ์Šคํ† ํฐ๊ณผ ๋ฆฌํ”„๋ ˆ์‹œ ํŽ˜์ด๋กœ๋“œ์— mongoose์—์„œ ์ž๋™์ƒ์„ฑ๋˜๋Š” _id๋ฅผ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์•ก์„ธ์Šค๋ณด๋‹ค ํ›จ์”ฌ ๊ธธ๊ฒŒ ์„ค์ •์„ ํ•ด์ฃผ์—ˆ์œผ๋ฉฐ,

์ด๊ณณ์ €๊ณณ์„ ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๋ณด์•ˆ์ ์œผ๋กœ๋‚˜ ๋ณด์—ฌ์ฃผ์ง€ ์•Š๋Š”๊ฒŒ ์ข‹๋‹ค๊ณ  ํ•ด์„œ

body๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” header๊ฐ€ ์ข€ ๋” ๊ดœ์ฐฎ๊ฒ ๋‹ค ์‹ถ์–ด์„œ res.set์œผ๋กœ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ๋„˜๊ฒจ์ฃผ์—ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋ฆฌํ”„๋ ˆ์‹œํ† ํฐ์„ ํ—ค๋”๋กœ ๋„˜๊ฒจ์ฃผ๊ธฐ ์ „์— ๋ฆฌํ”„๋ ˆ์‹œํ† ํฐ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋„ฃ์–ด์ฃผ์—ˆ๋Š”๋ฐ

์ด๊ฑฐ์— ๋Œ€ํ•œ๊ฑด ํŒ€์›๋ถ„์ด ์•Œ๋ ค์ฃผ์…จ๋Š”๋ฐ ๋งŒ์•ฝ์— ์•ก์„ธ์Šค ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜์–ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ๊ฐ€์ ธ์™€์„œ

์•ก์„ธ์Šค ํ† ํฐ์„ ๊ฐฑ์‹ ํ•˜๋ ค๊ณ  ํ• ๋•Œ ๋ฆฌํ”„๋ ˆ์‹œ๊ฐ€ ๊ฐ™์€ ๊ฒƒ์ธ์ง€ DB์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ ํ™•์ธํ•ด์•ผ

๋ณด์•ˆ์ ์œผ๋กœ ์ข€ ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ•˜์…”์„œ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์€ ๋”ฐ๋กœ DB์— ์ €์žฅ์„ ํ•ด์ฃผ์—ˆ๋‹ค.

 

๊ทธ๋Ÿฐ ๋‹ค์Œ ์š”์ฒญ์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋“ค์›จ์–ด๋กœ auth.js๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•ด๋‹น ํ† ํฐ์ด ์„œ๋ฒ„์—์„œ ๋งŒ๋“  ํ† ํฐ์ธ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด ๋œ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์•„์ง ํŒ€์›๋ถ„๊ณผ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ํ†ตํ•ด ๊ฐฑ์‹ ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ๋ฆฌํ”„๋ ˆ์‹œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•ด์„œ๋Š”

์ •ํ™•ํ•˜๊ฒŒ ๊ฒฐ์ •ํ•œ ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋ก ํŠธ ๋ถ„๋“ค์ด ํ…Œ์ŠคํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ๋งŒ ์ž‘์„ฑํ•ด์„œ

์•ก์„ธ์Šค ํ† ํฐ์„ ํ™•์ธํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋Š” ์ •๋„๋กœ๋งŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค.

 

์ผ๋‹จ์€ ์ด์ •๋„ ๊นŒ์ง€๋กœ๋งŒ ์ž‘์„ฑ์„ ์ง„ํ–‰ํ•˜๊ณ  ์นด์นด์˜ค ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•œ ๋‹ค์Œ์—

๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ๊ตฌ์ฒดํ™” ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

 

 


 

 

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€