인프런 커뮤니티 질문&답변

hi-ster님의 프로필 이미지
hi-ster

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

패스포트 사용하기

패스포트 질문드립니다.

작성

·

175

0

패스포트가 헷갈리는데 한가지 질문드립니다.
 
app.js에서
 
const passportConfig = require('./passport'); 여기서
passport/index.js를 불러오고
 
passportConfig()로 module.exports된 것을 가져다 쓰는데
 
함수를 바로싱행하였으니 돌아가는데
 
passport.serializeUser((user, done) => {
    done(null, user.id);
  });

  passport.deserializeUser((id, done) => {
    User.findOne({ where: { id } })
      .then(user => done(null, user))
      .catch(err => done(err));
  });

  local();
 
함수가 실행되면서 여기서 local도 localStrategy.js에 있는 함수를 loca()이 실행해줍니다.
 
passport.use(new LocalStrategy({
    usernameField: 'email',
    passwordField: 'password',
  }, async (email, password, done) => {
    try {
      const exUser = await User.findOne({ where: { email } });
      if (exUser) {
        const result = await bcrypt.compare(password, exUser.password);
        if (result) {
          done(null, exUser);
        } else {
          done(null, false, { message: '비밀번호가 일치하지 않습니다.' });
        }
      } else {
        done(null, false, { message: '가입되지 않은 회원입니다.' });
      }
    } catch (error) {
      console.error(error);
      done(error);
    }
}));
 
이부분이 auth에서 passport.authenticate에서 찾아간다고 말씀하셨는데 상단에서 local() 할때 아랫부분이 왜 실행이 않되는지 궁금합니다.
 
로그인한 상태입니다. 이멘트도 get으로 날아가는데 이멘트도 어디에서 보내는지 궁금합니다.

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

local()을 할 때

passport.use가 실행되는 것이지 그 안에 함수가 실행되는 게 아닙니다.

passport.use 안에 넣은 함수는 passport.authenticate('local')을 할 때 실행되도록 등록되는 겁니다.

hi-ster님의 프로필 이미지
hi-ster

작성한 질문수

질문하기