강의

멘토링

커뮤니티

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

이윤서님의 프로필 이미지
이윤서

작성한 질문수

passport를 이용한 로컬 로그인 구현중 프론트가 변하지 않음

작성

·

239

·

수정됨

0

강의 보면서 passport를 이용해 로컬 로그인 구현중이지만 로그인을 해도 <% if user %>로 분기처리한 부분이 작동하지 않고 redirect 해도 동일한 화면만 보입니다.

 

소스코드는 github에서 가져와서 동일할 것입니다.

 

제가 원인을 찾아보던중 passport 전략의 마지막 부분이라 할 수 있는 serializeUser으로 user가 제대로 done을 통해 넘어가지 못했나 싶어 serializeUser에서 console.log(user.id)를 밑에 사진처럼 시도 해봤지만 문제 없었습니다.

module.exports = () => {
    //serializeUser. 로그인 시 실행  
    passport.serializeUser((user, done) => {
        console.log(user);
        done(null,user.id);     //session에 저장하고 싶은 정보 = user.id
    });
    //deserializeUser. 매 요청 시 실행. serUser에서 done의 두번째 인수(=user.id)가 매개변수(=id)
    passport.deserializeUser((id,done) => {
        //db에서 아이디로 유저를 찾고 
        User.findOne({ where : {id}})
            .then(user => done(null, user))     //user를 req.user에 저장
            .catch(err => done(err));
    });

    local();
    kakao();
};

그러면 마지막 done(null,user.id)에서 세션으로 제대로 유저 아이디를 못 올려주고 있는거 같은데 뭐가 문제인지 모르겠습니다. 그리고 참고로 2번이상 로그인을 시도할 시 뷰는 안변하지만 쿼리에 '로그인한 상태입니다'라고 에러메세지가 뜹니다.

 

그리고 참고로 app.js에서 아래와 같이

initialize와 sessino은 세션 생성후 적용했습니다

app.use(session({
  resave: false,
  saveUninitialized: false,
  secret: process.env.COOKIE_SECRET,
  cookie: {
    httpOnly: true,
    secure: false,
  },
}));
app.use(passport.initialize()); 
app.use(passport.session());

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
이윤서님의 프로필 이미지
이윤서

작성한 질문수

질문하기