오늘 한 일
- 인프런
node.js
강의 수강
- 10_SNS 서비스 만들기:
passport
세팅 ~ 카카오 로그인까지 봄
node.js
코드 추가: passport
사용해서 회원가입, 로그인
routes/login, register
-> routes/auth
: /login, /register, /logout 구현
lib/passport.js
-> passport/index, localStrategy, kakaoStrategy
구분, kakao 제외하고 구현됨
routes/middlewares
: isLoggedIn, isNotLoggedIn 구현
bcrypt
모듈 이용해 비밀번호 저장 및 로그인 해시화
passport
로 회원가입, 로그인 성공
- ERROR
res.redirect('/');
등 redirect할 경우 여전히 302 redirect뜨면서 안됨. 아마 웹에서는 회원가입, 로그인, 홈 등 get 요청 들어오면 res.render();
하는걸로 화면이 만들어져 있는데 나는 없어서 그런건가 싶긴 하다. 안드로이드 프로젝트 찾아봐야 할듯
- async~await가 코드 상에 종종 나왔는데 무슨 의미였는지 까먹음..내일 볼 것
- 기타 해결한 에러
TypeError: Cannot read property 'serializeUser' of undefined
: 정확히 기억은 안나지만 아마 app.js
에서 passportConfig()->passportConfig(passport)
괄호 안에 passport 넣은 후로 사라진 듯?
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
: 이미 response가 클라이언트로 전송되고 나서 header를 set하려고 해서 일어난 에러니까 아마 res.redirect()
등 response를 끝내버리는 코드 뒤에 뭔가 또 붙였나보다. redirect문제 해결 안 되서 redirect 없애버리니 자연스레 사라진듯ㅜ
OverwriteModelError: Cannot overwrite 'users' model once compiled.
: 오늘 가장 고생한 에러. 아마 아무 생각없이 모델 파일 명을 바꾸고 실행한 후로 발생했던 것 같다. 검색해보니 이미 같은 이름(users)로 모델이 만들어져 있는데 user.js
파일 마지막 export할 때 mongoose.model('users',userSchema)
로 또 생성하려고 해서 그런 듯. 모델 지우기도 찾아보고 DB collection도 drop해봤지만 해결되지 않았음.
// Model/User.js
module.exports = mongoose.model('users', userSchema); // 에러 발생 코드
module.exports = mongoose.models.users || mongoose.model('users', userSchema);
// mongoose.models.모델명 : 모델명을 key로 모델 객체 반환. 즉 이름이 'users'인 모델 있으면 그거 사용하고 없으면 새로 만들어서 반환
- 블록체인 강의 듣고 정리
댓글남기기