현재 수업 코드 그대로 진행하면 심각한 오류가 있을 수 있습니다.
만약, logout()까지(혹은 그 전에도) 수업을 듣고, 프로그램을 실행했을 때,
" there is no user "라는 메세지가 안떠야하는데 계속해서 뜨고,
분명 하라는대로 했는데도 프로그램이 정상적으로 작동하지 않는다면,
app.use(
session({
....
store: new FileStore() --------> 이 부분을 주석처리해서 없에보세요!
})
);
1-20
수강완료.
한 가지 궁금한 점이 있습니다. logout을 할 때나 register를 할 때는 session에 save가 완료되면 redirect 하도록 장성하는 코드를 추가 할 수 있는데 로그인이 완료되었을때는 해당 코드를 추가 할 수 없는것인가요?
로그인을 하면 serialize가 한 번 실행되고 세션에 값이 저장되고 이후에 리다이렉트가 되는데 (passport.authenticate 이들 웨어를 통해) 이 사이에서 세션에 저장이 완료되면 리다이렉트 하는 코드를 추가 하고 싶습니다.
로그인을 몇 번 실행해 본 결과, 세션은 저장되었지만, welcome페이지에서 로그인 안 된 화면을 출력하는 경우가 가끔 생기네요.
이에 대해 해결책을 알고계신 고수님이 계시다면 답변 부탁드릴게요 ㅜㅜ
강의를 듣다가 꼬이는 부분이 생겨서 글을 적게 되었습니다. 5번을 반복해서 보고 flow는 알게 되었지만 동작이 안됩니다.
LocalStrategy() -> serializeUser() 를 거쳐 deserializeUser()의 console.log()가 출력이 되어야 하는데
deserializeUser()에서 console.log()가 출력이 되지 않습니다.
한참 삽질을 하다가 여기로 와보니 감자폭풍님께서 이미 같은 현상을 경험하셨고
그에 대한 방안을 올려주셨지만 passport를 사용하지 않는 것 같아 질문을 올리게 되었습니다.
감자폭풍님과 같은 현상으로 serializeUser를 거친 후 session 값을 저장하는 파일에 passport : ... 에서 ...에 Username이 저장 되어야 하지만 계속 저장이 되지 않습니다.
Error: EPERM: operation not permitted, rename 이라는 에러로 session 파일이 로그인을 하거나 로그아웃을 할 때마다 새로운 파일명으로 저장이 되는데 이러한 과정에서 session 파일에 passport : ...이 저장 되지 않는 것 같습니다.
TravelDreammer님 제 개인적인 의견입니다만,
강의에서 passport.use(new LocalStrategy()) 함수는
app.post('/auth/login',
passport.authenticate('local', {
이 부분에서 passport.authenticate라는 함수에 의하여 호출되는 콜백 함수라고 기억하고 있습니다.
따라서 회원가입하자마자 /welcome 페이지로 redirect되는 경우에는 app.post('/auth/login', ~) 의 route를 거치지 않기 때문에 LocalStrategy 가 호출되지 않는 것 같습니다.
logout를 구현할때요~
req.logout()을 쓰시면서 세션의 정보를 지워준다고 하는데
현재 이 코드에서 로그아웃을 하면 새로 로그인한 회원정보는 유지 되지 않고 지워지는 것인가요??
새로 가입한 정보로 로그인을 하면 log에 LocalStrategy도 찍히지 않고 로그인이 되지 않더라구요
근데 register를 통해서 가입하면 로근인은 되구요! 무슨 문제일까요?
강의를 들으며 따라 하는데요. 일단 코드를 적고 실행해 보는데 로그인 과정에서 로그인 이후 로그아웃 화면이 출력되지 않는데 어디가 문제인지 모르겠어서 본 과정의 소스와 비교해 보려고 하는데 소스가 따로 없어 비교해 볼 수 가 없네요. 본 과정의 소스를 공유해주시면 감사하겠습니다.