로그인/회원가입 - #8 로그인 기능 with Bcrypt

Chipmunk_jeong·2021년 5월 26일

boiler-plate

목록 보기
8/23
post-thumbnail

로그인 기능 만들기


login router 분기

post로 /login이라는 endpoint로 요청하는 메서드를 만들어준다.
그리고 이 메서드가 해야될것은
1. 요청된 이메일(id)를 데이터베이스에서 찾는다.
2. 이메일이 존재한다면 비밀번호가 같은지 확인한다.
3. 비밀버호까지 같다면 토큰을 생성한다.
이렇게 세단계로 볼 수 있을것 같다.
우선 입력받은 이메일은 찾아야 한다.
몽구스에 내장되어있는 findOne메서드를 이용해서 해당 이메일을 찾는다.
이메일을 잘 찾았다면,
비밀번호를 확인한다. 여기서 comparePassword는 UsersModel에서 정의를 한 사용자 메서드이다.
위와 같이 플레인한 비밀번호를 받아와서 bcript를 이용해서 암호화를 하여 데이터베이스에 있는 비밀번호와 비교를 해준뒤 콜백함수의 2번째 인자값으로 넘겨준다.
그래서 다시 위의 코드에서 isMatch가 넘어왔냐 안넘어왔냐에 따라 비밀번호가 맞는지 안맞는지 구분을 할 수 있다.
그런다음 비밀번호가 맞다면 토큰을 생성해야 한다.
우선 토큰을 생성하기 위해 jsonwebtoken라이브러리를 이용한다.
npm을 이용하여 다운받고

그런다음 토큰을 생성하는데 아래와 같이 생성해준다.

그런다음 user의 token에 해당 token을 넣어 세이브 해준다.

이렇게 토큰을 생성하여 콜백에 user을 넘겨주면
여기서 토큰을 저장해야한다. 이때 저장할 수 있는곳이 여러개다.
쿠키, 로컬스토리지, 세션등등 여러개가 있는데 쿠키에 저장하기위해 res객체에 cookie에 넣어주고 응답코드를 보내주었다.
그리고 Postman으로 테스트 해본 결과
위처럼 정상적으로 요청이 응답되는것을 볼 수 있다.

profile
Web Developer

0개의 댓글