passport

hwakyungChoiยท2020๋…„ 10์›” 5์ผ
1

๐Ÿ’ป passport๋Š” Node.js์—์„œ ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฏธ๋“ค์›จ์–ด

  • strategy๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ์œ„ํ•œ ์ธ์ฆ ์ „๋žต
  • ๊ธฐ๋ณธ์ ์ธ ์ „๋žต์€ ๋กœ์ปฌ ์ „๋žต
    - ํ˜„์žฌ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” DB๋กœ ์ง์ ‘ ์ธ์ฆ๋กœ์ง์„ ๊ตฌํ˜„
  • ๋‹ค๋ฅธ ์ „๋žต์œผ๋กœ๋Š” ํŽ˜์ด์Šค๋ถ, ๊ตฌ๊ธ€๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์†Œ์…œ API๋กœ ์ธ์ฆํ•˜๋Š” ์ „๋žต์ด ์žˆ์Œ
  • ์ „๋žต๊ณผ ํ™˜๊ฒฝ์„ค์ •์€ use() ๋กœ ์‚ฌ์šฉ -์ธ์ฆ ๋กœ์ง์—๋Š” ์„ธ์…˜์ด ๊ผญ ํ•„์š”
    passport.use(new LocalStrategy({
     usernameField: 'username',
     passwordField: 'password',
     passReqToCallback: true //์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ธ์ฆ ํ•จ์ˆ˜๋กœ HTTP request๋ฅผ ๊ทธ๋Œ€๋กœ  ์ „๋‹ฌํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค
    }, function (req, username, password, done) {
     if(username === 'user001' && password === 'password'){
       return done(null, {
         'user_id': username,
       });
     }else{
       return done(false, null)
     }
    }));
 
 - ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•  ์‹œ serializeUser ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ Session์— ์ €์žฅ
 - ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜๊ฒŒ ๋˜๋ฉด Session์ •๋ณด๋ฅผ ์ €์žฅ์„ ์™„๋ฃŒํ–ˆ๊ธฐ์— ์ด์ œ ํŽ˜์ด์‹œ ์ ‘๊ทผ ์‹œ๋งˆ๋‹ค ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ฐ–๊ฒŒ Session์— ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์ด ์™„๋ฃŒ๋˜๊ณ  ํŽ˜์ด์ง€ ์ด๋™์‹œ deserializeUser ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋กœ๊ทธ๋ฅผ ์ฐ์–ด ๋ณด์‹œ๋ฉด ํ™•์ธ

0๊ฐœ์˜ ๋Œ“๊ธ€