sign up은 이메일과 사용자 이름, 그리고 패스워드 3가지를 입력받아서 사용자 정보를 생성한다. role은 만일 클라이언트에서 지정한 role이 있다면 설정하고 없다면 ROLE_USER를 기본 role로 설정한다.
패스워드는 복호화할 수 없는 비대칭키로 암호화를 해야 하는데 앞에서 bcrypt 모듈을 설치했고 hashSync 함수를 이용해서 복호화 한다.
src/controller/AuthController.ts
이메일과 패스워드를 입력받아서 체크하는 로그인 함수를 구현한다.
해당 사용자 아이디(이메일)이 있는지를 체크한 후 패스워드가 맞는지 체크한다.
패스워드는 복호화가 불가능하므로 compareSync 함수를 사용하여 비교한다.
src/controller/AuthController.ts
로그인시 jwt 토큰을 생성해서 리턴한다. 토큰 생성시 secret key와 expire 시간을 설정해야 하는데 .env 화일에 생성한다.
.env
registered claims인 jti에는 사용자 id를 넣었고 그 밖에 필요한 것들은 private claims 로 정의해서 넣었다. roles는 여러개가 가능하므로 스트링 배열 형태로 넣는다.