사용자가 웹 페이지에서 사용자의 정보를 전송하면, 미들웨어로 전송하게 되고, 미들웨어의 local 에 의해서 passport 에 등록된 localstrategy
라는 객체의 콜백함수가 실행된다.
실행되면 사용자가 입력한 사용자의 정보값이 첫 번째(username)와 두 번째 인자(password)로 들어가게 된다.
사용자가 맞다면, done 에 user를 전달하고, 로그인을 진행하고,
사용자가 다르다면, done에 false 를 전달하고, 로그인 실패 처리를 한다.
done 이 실행되고서, sessions 라는 부분이 실행되는데,
Documentation: Username & Password
로그인이 인증되었는지 아니었는지의 여부를 세션을 통해서 유지한다.
passport를 통해서 세션을 사용하겠다고 선언을 했기에, 세션 부분을 설정해줘야한다.
해당 코드를 passport.use 전에 작성한다.
기본적인 코드 형태
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
내 코드에 맞도록 값을 변형시킨다.
passport.serializeUser(function(user, done) {
console.log('serializeUser', user);
done(null, user.username);
});
passport.deserializeUser(function(id, done) {
console.log('deserializeUser', id);
for(var i =0; i <users.length; i++){
var user = users[i];
if(user.username === id){
return done(null, user);
}
}
});
passport.serializeUser(function(user, done) {...})
→ passport.use
에서 전달한 done 의 두 번째 인자가 false
가 아닐 때, 해당 함수가 호출된다.