세션 구현 시도
https://codelist.tistory.com/62
[Vue.js, Node.js] 쿠키로 로그인/로그아웃 구현
여는 글 쿠키는 보안상 좋지 않아서 쿠키만으로는 로그인/로그아웃을 구현하기엔 좋지 않다. 대부분은 세션+쿠키를 사용하는 것 같다. 그래서 나도 처음엔 세션부터 구현하려고 했다. 세션에는
codelist.tistory.com
이제 DB 삭제가 되기 때문에 내가 세션을 자체적으로 구현하려고 했다.
로그인 시 DB 생성 -> DB 생성 시 TTL 사용해서 지정 시간 뒤에 자동으로 세션 값 삭제
근데 이틀 동안 TTL에서 막혀서 그냥 라이브러리 써야겠다 싶었는데 1번 글에서 만났던 문제를 또 마주하게 됐다.
req.session.userinfo = users.phone
^
TypeError: Cannot read property 'userinfo' of undefined
이런 에러가 나는데 다른 사람들은 잘만 사용하던데 난 왜 안될까...
일단 req.session 자체가 undefined라 키도 당연히 오류나는 것 같아서 req.session undefined 구글링부터 해보고 있다...
+22.1.4 해결
req.session undefined를 구글링하고 있는데 아래 포스팅을 보게 됐다.
https://jaroinside.tistory.com/15
1. express-session
express 사용시 express-session 을 사용하는 경우가 많습니다. 이번에 한 블로그의 공부를 따라하던중, express-session 을 사용하였는데, 로그인 구현 관련이었습니다. 로그인을 하면서 session을 저장하기
jaroinside.tistory.com
그래서 순서를 바꿨더니 페이지 접속 시 에러가 생겼다.
TypeError: Secret string must be provided.
사실 이 에러는 처음 보는 에러가 아니었다.
세션 이것저것 해보면서 몇 번 만나봤던 에러인데 나는 분명히 secret을 명시해뒀기 때문에 그냥 이상하고 뜬금없는 에러라고 생각해서 무시했는데 이번에는 저 에러에 대해서 구글링을 해봐야겠다는 생각이 들었다.
그리고는 아래 글을 보고 해결할 수 있었다.
https://stackoverflow.com/questions/38326191/node-js-session-login
Node.js session login
Node.js does not seem to be remembering my session. I am using Express with cookie-parser and express-session as middleware. In my application, I use Mongo to keep usernames and passwords. The
stackoverflow.com
cookieParser 설정에 대한 내용인데 먼저 글을 읽어보고 나는 cookieParser에 딱히 설정한 게 없을텐데..? 하면서 내 코드를 봤더니...
app.use(cookieParser({sameSite : 'none', secure : true}));
secure가 true로 되어있었다.
배포하고나서 쿠키 안될 때 건드렸던 부분인데 여기서도 secure가 문제일 줄 몰랐다.
그래서 secure를 지웠으나 그래도 똑같은 에러가 생겼는데 에러를 다시보면 secret을 제공해야한다- 라는 내용이므로 아래처럼 작성하니 session이 작동했다.
app.use(cookieParser('secret'));
session이 안되는 건 당연히 session 문제일 줄 알았는데 cookieParser가 문제일 줄 몰랐다.
기존 코드도 다시 보고 없던 에러가 생기면 유심히 봐야겠다...
++session store 설정 참고 코드
'Node.js' 카테고리의 다른 글
[AWS] [올랑올랑 종료] 백그라운드 배포하기 (0) | 2022.01.17 |
---|---|
[Node.js] mongoDB UPDATE 사용하기 (0) | 2022.01.05 |
[Node.js, Vue.js] alert 띄우기 (0) | 2021.12.31 |
[Node.js, Vue.js] res.json으로 Vue에 값 전달하기 (0) | 2021.12.26 |
[Node.js, Vue.js] 탈퇴 기능(mongodb) (0) | 2021.12.21 |