Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

인증관련 코드 상세설명 #14

Open
junu-kk opened this issue Dec 15, 2022 · 0 comments
Open

인증관련 코드 상세설명 #14

junu-kk opened this issue Dec 15, 2022 · 0 comments

Comments

@junu-kk
Copy link
Collaborator

junu-kk commented Dec 15, 2022

미들웨어가 서비스와 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 복호화
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant