사용자가 로그인할 경우에 해당 사용자가 일반 사용자인지, 해당 페이지 권한이 있는지의 여부를 미리 판별하고 그에 맞게 화면을 이동시킬 수 있도록 인증 처리를 해줘야한다.

get()을 통해 보내온 req를 활용한다. 이전에 로그인 기능을 구현하면서 로그인이 성공한 유저에게는 각 유저별 token을 쿠기에 저장했다. 또한 token을 db에 저장도 되어있는 상태이다.
우선 해당 요청된 cookie의 값을 저장하여 db에 저장되어있는 토큰인지에 대한 정보를 찾기 위해서 findByToken을 생성해준다. 해당 기능은 실제 User.js에서 구현한다.
받아온 토큰은 이전에 _id와 secretToken 문자와 결합하여 만들어 jwt.verify를 사용하여 decode를 진행한다.
결과적으로 다시 _id가 구해지고 해당 id를 가진 유저가 있는지 findOne()을 통해서 db에서 정보를 가져온다.
해당 결과가 있을 경우 콜백함수를 통해 user를 다시 auth에 전달한다.
받아온 정보를 다시 req에 넣어서 다음 기능을 실행할 수 있도록 진행.
해당 함수를 통해 중간에 auth 를 실행하였고 err없이 왔다는 의미는 정상적으로 해당 user의 정보를 가져왔음을 뜻한다.
다시 res에 담아서 user정보를 화면에 뿌려준다.
위에서 만든 auth기능을 통해 인증을 거치고 해당 유저에 대한 로그아웃 기능까지 구현해보자.
가져온 요청에서 db에 바로 접근하여 해당 유저를 찾고 유저의 데이터를 업데이트를 같이 진행하는 findOneAndUpdate()를 사용한다.
로그아웃이 된 유저에 토큰을 지우고 로그아웃이 성공될 경우 success true를 반환하면 끝난다.
비교적 로그인보다 로그아웃 구현이 더욱 간단했다.
해당 강의 👇👇
'Node.js' 카테고리의 다른 글
jsonwebtoken & cookie-parser 사용하기 (0) | 2023.02.06 |
---|---|
Bcrypt 비밀번호 암호화 (0) | 2023.02.05 |
nodemon 사용하기 (0) | 2023.02.05 |
BodyParser&PostMan를 이용한 데이터 주고받기 (0) | 2023.02.05 |
node.js express 설치 및 테스트 (0) | 2023.02.04 |