[1st project user API]

바울·2022년 7월 23일
0

모델링을 해준후 회원가입 로그인 관련 API를 구현해 주었다.

일단 필요한 파일들을 임포트 해주었다. 암호화시 필요한 bcrypt 유저에게 토큰 발급시 필요한 jwt 유효성검사시 에러반환을 위한 ValidationError 이메일및 패스워드 정규식을 사용하기위해 validation에서 작성한 로직 임포트를 해주었다.

SignUp


우선 기본적으로 회원가입에 필요한 데이터 들을 body안에 json형태로 받는다.
그 후 이메일 및 패스워드 정규식을 적용해 줘야 하는데 정규식을 class안에 작성하지 않고 validation에 따로 작성해 두었다.

우선 re함수를 사용해 줘야하기 때문에 임포트 해준후 위해 말한 거 처럼 유효성검사시 에러를 반환하기 위해 ValidationError를 임포트 해준후 함수안에 만약 우리가 설정한 정규식과 사용자가 요청한 정보에있는 조건과 일치하지 않을경우 에러 처리를 해주었다. 여기서 return을 사용하지않고 raise를 사용해 주었는데 raise란 사용자가 직접 에러를 발생시키는 기능이다 try/except와는 별개로 코드 하나 하나에 에러를 넣어 사용자가 직접 에러를 발생시킬 수 있는 기능이다.

그 후 폰넘버와 이메일이 이미 데이터베이스에 존재할 경우에 대한 에러를 반환해주고 bcrypt를 이용해 사용자가 입력한 비밀번호를 암호화 해준 후 데이터베이스에 사용자가 요청한 정보를 저장해 두었다.

SignIn


로그인을 하기 위해서는 이메일과 패스워드가 필요해서 body에 json형태로 값을 받은 후에 get을 이용해 user_email에 저장되있는 사용자가 로그인할때 사용한 이메일과 User테이블 안에있는 email과 비교해서 값이 일치하다면 에러가 발생하지 않고 bcrypt.checkpw함수를 이용해 유저가 입력한 비밀번호와 user테이블 안에있는 암호화 되어있는 비밀번호를 encode 시켜준 후에 서로 값이 동일하지 않을경우 에러 처리를 해주었다. 그 후에 로그인을 성공하면 유저가 사용할 토큰을 jwt이용해 발급해 준다. 그리고 get을 이용해 정보를 가져올때는 무조건 User.DoesNotExist에러를 예외처리 해주어야 한다고 한다. 안하면 어떤 일이 생길지 궁금해서 예외처리를 안해준 상태에서 코드를 실행시키면 유저 정보가 없을때 엄청난 에러가 나온다..

0개의 댓글