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