-
Notifications
You must be signed in to change notification settings - Fork 0
인증관련 코드 상세설명 #14
Copy link
Copy link
Open
Description
미들웨어가 서비스와 jwt함수를 부르고, jwt함수가 실제 jsonwebtoken 라이브러리 함수를 부르는 형태이다.
refresh 관련 로직은 쓰이지 않고 있기 때문에 생략한다.
인증관련 미들웨어 세개
위치: controllers/user.js, middlewares/auth.js
userController.signUp- body로부터 email, password, nickname 체크를 거친 후
- signup 서비스를 거쳐 유저를 뽑은 후 거기의 email, nickname 반환
userController.signIn- email로 유저 뽑은 후
- 거기서 salt, hashedPassword 뽑은 후
- email, salt, hashedPassword로 signin 서비스 호출.
- 성공시 jwt.sign 호출해 accessToken, refreshToken 뽑아내고 nickname과 함께 응답
authUtil.checkToken- res.headers.jwt 뽑아 jwt.verify 호출해 user 뽑고
- 별다른 경우가 아니라면 req.decoded에 user 넣어줌
인증관련 서비스 다섯개
위치: service/userService.js
emailCheck,nicknameCheck,getNickname: 단순 db조회signup- salt 생성 후
- password와 salt로 HashedPassword 생성
- db에 salt, hashedPassword, email, nickname과 함께 유저정보 insert
signin- inputpassword를 salt로 암호화해서 hashedPassword를 만들고
- 해당 email과 hashedPassword에 해당하는 유저 db에서 찾아 리턴
jwt 관련 함수 두개
위치: modules/jwt.js
sign- {id, name} payload + secretKey + options로 jsonwebtoken.sign()을 호출해
- {accessToken:위 결과값}을 리턴한다.
verify: jsonwebotken.verify(token, secretKey)를 호출해 리턴한다
실제 jsonwebtoken 라이브러리 함수
위치: node_modules/jsonwebtoken
sign: payload => jwt 암호화verify: jwt => payload 복호화
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels