로그인/회원가입 - #9 토큰 생성

Chipmunk_jeong·2021년 5월 29일

boiler-plate

목록 보기
9/23
post-thumbnail

토큰 생성하기


토큰 생성

앞서 로그인 시도할 때 이메일과 비밀번호를 다 체크를 했다.
앞의 두개가 다 통과가 되었다면, 이제 토큰을 생성해줘야 한다.
로그인 라우터에서 이메일과 비밀번호가 확인되었다면, 토큰을 생성하는 메서드를 호출한다.
그리고 해당 메서드를 생성하기위해 user model로 가서 메서드를 정의한다.
호출할때 콜백함수를 받아주기때문에 이 메서드는 콜백함수를 인자로 받아야한다.
그다음 해야할것은 다음과 같다
1. 토큰을 생성
2. 토큰을 현재 유저에게 할당
3. 데이터 베이스 저장

우선 첫번째로 토큰 생성이다.
토큰을 생성하기 위해서는 jsonwebtoken이라는 패키지를 사용할것이다.
npm install jsonwebtoken --save 명령어를 통하여 설치하면 package.json에 디펜던시로 의존되고 있을것이다.
그런 다음 해당 모듈을 상단에 받아온다
이렇게 하면 토큰을 만들 준비가 끝났다.
토큰을 만들기 위해서는 해당 라이브러리의 sign()메서드를 이용한다.
인자값으로는 유저정보와 맵필할 키값을 할당해야하는데, 이때 유저정보는 password를 제외하는것이 좋다.
그 다음 해당 유저정보와 키를 이용해 sign메서드를 호출하여 토큰을 생성한다.
(여기서 키는 그냥 'secretKey'라고 할당함)
이렇게 토큰을 생성할 수 있다.


토큰 저장 및 업데이트

이제 생성한 토큰을 유저 정보에 저장한 뒤 디비를 업데이트를 해야한다.
위에서 만든 토큰을 유저토큰에 저장을 한뒤 user를 데이터베이스에 업데이트 한다. 그때 나온 결과값을 콜백함수에 넣어준다.
이렇게 데이터를 콜백에 넣어주는것까지 완성되면 아까 generateToken메서드를 호출하는 곳으로 넘겨주는 콜백을 완성한다.
콜백은 에러와 유저데이터를 받으며 에러가 발생하면 해당 에러를 넣어주고, 정상적으로 저장이되었으면 우선 응답객체에 쿠키에다가 해당 유저의 토큰을 담아준다. 그 다음 loginSuccess값과 함께 userId를 보내준다.


POST-MAN 테스트

포스트맨을 실행하고 POST에 endpoint는 /login으로 테스트를 한다.

잘 넘어옴

profile
Web Developer

0개의 댓글