• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

패스포트 질문드립니다.

22.01.06 15:25 작성 조회수 141

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')을 할 때 실행되도록 등록되는 겁니다.