Passport(passport-local)
๐Passport ์ฌ์ฉํด๋ณด๊ธฐ
passport๋ Node.js์ ์ธ์ฆ ๋ฏธ๋ค์จ์ด๋ก ์์ฒญ์ ๋ํ ์ธ์ฆ์ ์ํ ํจํค์ง์ด๋ค. ์์ ๋คํธ์ํฌ ์๋น์ค์ ๋ฐ์ ์ผ๋ก ์ธํด OAuth ์ธ์ฆ ๋ฐฉ์์ ์ฌ์ฉ์ด ๋ณดํธํ ๋๋ฉด์ API๋ฅผ ์ด์ฉํ๊ธฐ ์ํ ๋ฐฉ์์ ๊ตฌ์ถํด์ฃผ๋ ํจํค์ง์ด๋ค.
๐passport-local
passport์ ์ ๋ต์ค ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ก์ปฌ ๋ก๊ทธ์ธ์ ๊ตฌํํด๋ณด๋๋ก ํ์. ์์ ๋ก๊ทธ์ธ์ ์ฌ์ฉํ๊ธฐ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ธ ๋ก์ปฌ์ ์ฌ์ฉํด๋ณด๋ฉฐ passport๊ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ตฌ๋๋๋์ง ํ์ธํด๋ณด๊ฒ ๋ค.
๋จผ์ passport๋ ์์ฒญ์ ์ธ์ฆํ๊ธฐ ์ํด ์ ๋ต์ด๋ผ๋ ๊ฒ์ ์ฌ์ฉํ๋ค. ์ฐ๋ฆฌ๋ local ์ ๋ต์ ๊ตฌํํ์ฌ local์ธ์ฆ์์ ์์ฒญ์ passport์๊ฒ ์ ๋ฌ ํ ๊ฒ์ด๋ค.
๋จผ์ ํ์ํ ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ ํ๋ค.npm i passport passport-local
ํจํค์ง ๋ค์ด๋ก๋ ํ local ์ ๋ต ํ์ผ์ ๊ตฌ์ฑํด์ค๋ค. ์ ๋ต์ด๋ผ๋ ๊ฒ์ ๊ณง ์ฐ๋ฆฌ๊ฐ ๋ก๊ทธ์ธ์ ์ฒ๋ฆฌํ ๊ณผ์ ์ ๋์ดํ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
1 |
const passport = require('passport'); |
์ ๋ตํ์ผ์ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ๋ค. ๋ก๊ทธ์ธ์ ์ฌ์ฉ์์๊ฒ ๋ฐ๋ ์์ด๋ ๋น๋ฐ๋ฒํธ ์ ๋ณด๋ฅผ username, passwordํ๋์ ๊ฐ์ ๋ฃ์ด์ค๋ค. ๊ธฐ๋ณธ ํ๋๊ฐ์ username, password์ด๋ฏ๋ก ์๋น์ค์์ body์ ๋ด๋ ์ ๋ณด์ ์ด๋ฆ๊ณผ ๊ธฐ๋ณธ๊ฐ์ด ๋ค๋ฅด๋ฉด ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
์ดํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ์ ๋ฅผ ์ฐพ๊ณ ์๋ค๋ฉด ๋น๋ฐ๋ฒํธ๋ฅผ ๋น๊ตํ๊ณ ์ผ์นํ๋ฉด ํด๋น ์ ์ ๋ฅผ ๋ฆฌํดํด์ค๋ค.
ํด๋น ๊ณผ์ ์์ done์ด๋ผ๋ ์ฝ๋ฐฑ ๋ฉ์๋๊ฐ ์ฌ์ฉ๋๋๋ฐ done๋ฉ์๋์ ๋ค์ด๊ฐ๋ ์ธ์๊ฐ์ **done(err, data)**์ด๋ค.
์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด ์
๋ ฅ๋ฐ์ ์ ๋ณด์ ์ผ์นํ๋ ์ ์ ๊ฐ ์์๋๋ ์ฒซ ๋ฒ์งธ ์ธ์๊ฐ์ null๋ก error๊ฐ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ ์ ์ ์ ๋ณด๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ์นํ๋์ง ์๋์ง ์กฐํ ํ ์ฑ๊ณต์ ์ ์ ๋ฐ์ดํฐ ์์ ์ ์๋ฌ๋ฅผ doneํจ์์ ์ ๋ฌํด ๋ฆฌํดํด์ฃผ๋ฉด ๋๋ค.
์ด๋ ๊ฒ ์ ์ ์ ์ ๋ณด๋ฅผ ์กฐํํ๊ณ ๋ฆฌํดํ ๊ฐ์ passport์์๋ ์ธ์ ์ผ๋ก ์์ฑํด์ค๋ค.๐๐๐
๐์ธ์ ์์ฑ
1 |
passport.serializeUser((user, done ) => { |
serialize, deserialize ํจ์๋ passport์์ ์ธ์
์ ์์ฑํ๊ณ ์์ฑ๋ ์ธ์
๊ฐ์ ํตํ ์ ์ ์ ์ ๋ณด๋ฅผ ์กฐํํ๋ ํจ์๋ก ์ดํดํ๋ฉด ๋๋ค.
serialize ํจ์๋ ์ ๋ต ํ์ผ์์ ๋ฆฌํดํ ๊ฐ์ ๋ฐ์ ์ ์ ์ ์ ๋ณด๋ฅผ ์ธ์
์ผ๋ก ๋ด์ ์์ฑํด์ค๋ค. ์์ฃผ ํธ๋ฆฌํ๊ฒ ์ธ์
์ ์์ฑํด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค.
๐์ธ์ ์ค์
passport์์ ์ธ์
์ ์์ฑํด์ค๋ค. ํ์ง๋ง express์์ passport๊ฐ ์์ฑํ ์ธ์
์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ช๊ฐ์ง ์ค์ ์ด ํ์ํ๋ค.
์ค์ ์ app.js ์์ ๋ค์๊ณผ ๊ฐ์ด ์ด๋ฃจ์ด์ง๋ค.
1 |
app.use(session({ |
express์ passport๋ฅผ ์ฌ์ฉํ๊ณ passport๊ฐ ์ธ์
์ ์ด์ฉํ๋ค๋ ์ค์ ์ ํด์ฃผ๋ฉด ๋๋ค.
์ด์ local์ ๋ต์ด ๊ตฌ์ฑ๋์์ผ๋ ํ
์คํธ๋ฅผ ์งํํด๋ณด์.
โ ํ ์คํธ
ํ ์คํธ๋ ํด๋ก ์ฝ๋ฉ์ ์งํ์ค์ด๋ ํ๋ก์ ํธ์์ ์งํ ํ์๋ค.
๋ก๊ทธ์ธ์ ์ํ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๊ณ ๋ก๊ทธ์ธ์ ์งํํ๋ค.
์์ฒญ์ด 200 StatusCode์ ํจ๊ป ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๊ฐ ๋์๋ค.
๋คํธ์ํฌ ํญ์ ํตํด ์ธ์
๊น์ง ์ฑ๊ณต์ ์ผ๋ก ์์ฑ๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
์ด๋ ๊ฒ passport์ local์ ๋ ฅ์ ์คํํด ๋ณด์๋ค. ์ดํ ์์
๋ก๊ทธ์ธ API๋ฅผ ํตํด passport์ ๋ต์ ๊ตฌ์ถํ๋ ๊ณผ์ ๊น์ง ์์๋ณด๋๋ก ํ์.
Passport(passport-local)
http://hanjuren.github.io/2021/09/09/nodejs/Passport-passport-local/