mooon๐ŸŒ™
STUDY
mooon๐ŸŒ™
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (170)
    • ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ (147)
      • ๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (53)
      • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv1 (13)
      • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ž…๋ฌธ (54)
      • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] SQL ๊ณ ๋“์  Kit (27)
    • BACK (4)
      • Spring (3)
      • PHP (0)
    • FRONT (5)
    • DevOps (8)
      • Jenkins (8)
    • GitHub๐ŸŒฑ (2)
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (1)
      • SQL (1)
    • Error ๐Ÿ’ฅ (0)
      • php (2)
    • ๐Ÿ˜‹ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • โญ ๊นƒํ—ˆ๋ธŒ
  • ๐Ÿ’• ๋ฐฉ๋ช…๋ก
  • ๐Ÿ’ฅ ํƒœ๊ทธ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ž…๋ฌธ
  • ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • DevOps
  • Python
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๋ฐฑ์ค€
  • SQL ๊ณ ๋“์  Kit
  • SQL
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • c++

์ตœ๊ทผ ๊ธ€

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
mooon๐ŸŒ™

STUDY

BACK

[express] passport.js

2021. 8. 4. 19:16
728x90

01. passport install

npm install passport passport-local

- passport์™€ passport-local ์„ npm์œผ๋กœ ์„ค์น˜

 

 

02. passport ์„ธํŒ…

//passport.js ์„ธํŒ…
const passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;

app.use(passport.initialize());
app.use(passport.session());

//๋กœ๊ทธ์ธ ์‹œ, user ์ •๋ณด๋ฅผ ์„ธ์…˜์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœ
passport.serializeUser(function(user, done) {
  done(null, user.id);
});

//๋งค ์š”์ฒญ์‹œ ํ˜ธ์ถœ, ์„ธ์…˜์— ์ €์žฅ๋œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ด
passport.deserializeUser(function(id, done) {
  User.findById(id, function(err, user) {
    done(err, user);
  });
});

 

 

03. local ๋กœ๊ทธ์ธ ์ „๋žต ์„ค์ •

//ํŒจ์ŠคํฌํŠธ ๋กœ์ปฌ์ „๋žต ์„ค๋ช…
passport.use(new LocalStrategy({
  usernameField: 'username', // req.body.username
  passwordField: 'password', //req.body.password
}, async function(username, password, done) {
   //๋กœ๊ทธ์ธ ๋กœ์ง ์ž‘์„ฑํ•  ๊ฒƒ (์•„๋ž˜ ์ฝ”๋“œ๋Š” ์˜ˆ์‹œ ์ฝ”๋“œ)
    var sql="select password_hash from User where User_id=?";
    var params=[username];
    con.query(sql, params, function(err, rows){
      console.log(err);
      if(err) return done(null, false, { message: "id not found" });
      return done(null, rows[0]);
    })
  }
));

- ๋กœ์ปฌ ์ „๋žต์€ ๊ธฐ๋ณธ์ ์œผ๋กœ username, password ์œผ๋กœ ๊ฐ’์„ ๋ฐ›์•„์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์œ„์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด usernameField:'์›ํ•˜๋Š”์ด๋ฆ„', passwordField:'์›ํ•˜๋Š”์ด๋ฆ„' ๊ณผ ๊ฐ™์ด ์„ค์ • ํ•„์š”

 

- ๊ฒฐ๊ณผ๋Š” ๋ฐ˜๋“œ์‹œ done(null, user์ •๋ณด, ๋ฉ”์„ธ์ง€)์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ return ํ•  ๊ฒƒ

 

 

04. ๋กœ๊ทธ์ธ ์š”์ฒญ ์ฒ˜๋ฆฌ

//๋กœ๊ทธ์ธ ์‹œํ‚ค๋Š” ์ฃผ์†Œ
app.post('/Account/signup', async function(req, res, next){
 
  //ํŒจ์ŠคํฌํŠธ ์‹คํ–‰ -> ๋กœ๊ทธ์ธ (๋กœ์ปฌ)
  passport.authenticate('local', (authError, user, info)=>{
  	//local ์ „๋žต์— ๋”ฐ๋ผ ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•œ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ์‘๋‹ต ์ž‘์„ฑ
    if(authError){
      console.error(authError);
    }
    if(!user){
      return res.json(info);
    }
    return res.json({user});
  }
)(req,res,next);//๋ฏธ๋“ค์›จ์–ด ์‹คํ–‰
}
);

- passport.authenticate()๋’ค์— (req, res, next)๋ฅผ ๋ถ™์—ฌ์„œ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ์–ด์•ผ ๋จ

 

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    mooon๐ŸŒ™
    mooon๐ŸŒ™
    ๊ฐœ๋ฐœ ๊ณต๋ถ€ ๊ธฐ๋ก

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”