저장을 습관화
에러 기록 - JsonWebTokenError: invalid signature 본문
- 증상
회원 관리 기능, 로그인 후 자신의 정보 확인하는 기능 작성 중
정상적으로 로그인 되었음에도 받아온 토큰의 검증이 틀리는 문제 발생
아래는 관련 로그
JsonWebTokenError: invalid signature
at C:(생략)\node_modules\jsonwebtoken\verify.js:171:19
at getSecret (C:(생략)\node_modules\jsonwebtoken\verify.js:97:14)
at module.exports [as verify] (C:(생략)\node_modules\jsonwebtoken\verify.js:101:10)
at module.exports (C:(생략)\middlewares\auth-middleware.js:31:28)
at Layer.handle [as handle_request] (C:(생략)\node_modules\express\lib\router\layer.js:95:5)
at next (C:(생략)\node_modules\express\lib\router\route.js:144:13)
at Route.dispatch (C:(생략)\node_modules\express\lib\router\route.js:114:3)
at Layer.handle [as handle_request] (C:(생략)\node_modules\express\lib\router\layer.js:95:5)
at C:(생략)\node_modules\express\lib\router\index.js:284:15
at Function.process_params (C:(생략)\node_modules\express\lib\router\index.js:346:12)
- 원인
JWT를 생성하는 함수(jwt.sign)에서 사용한 시크릿키와
JWT를 검증하는 함수(jwt.verify)에서 사용된 시크릿키가 서로 달라 발생한 문제
JWT 생성 - ./route/auth.js
...(생략)...
const token = jwt.sign({ userId: user.userId }, "custom-secret-key");
...(이후 대충 JWT를 쿠키로 할당하고 export하는 코드)...
JWT 검증 - ./middlewares/auth-middleware.js
...(생략)...
const { userId } = jwt.verify(authToken, "customized-secret-key");
...(생략)...
- 해결 방법
각 줄마다 로그를 출력하게하여 진행이 막히는 곳을 찾음
JWT의 검증 부분에서 에러가 발생하는것을 확인함
이후 변수 authToken, 변수 선언, 변수 선언할때 사용한 변수의 선언...
쭉 되돌려가면서 로그 찍어 각 단계가 정상적으로 작동하고 있는지 확인함
그렇게 JWT의 생성까지 올라가게 되었고 두 파일의 시크릿키가 다르다는 것을 확인함
두 파일의 시크릿키의 내용을 맞춰주었고 에러가 잡힌것을 확인함
- 느낀점
현재 발생한 에러가 생각보다 큰 문제가 아닐 수도 있다..
코드 엎을 생각부터 하지말고 일단 차근차근 되돌려보자..
'공부 > node.js' 카테고리의 다른 글
에러 기록 - SequelizeDatabaseError, sqlMessage: "Unknown column 'postId' in 'field list'" (0) | 2023.06.29 |
---|---|
에러 기록 - TypeError: Cannot read properties of undefined (reading 'create') (0) | 2023.06.29 |
.toHexString() (0) | 2023.06.19 |
node.js mongoose 시간 적는 법 (0) | 2023.06.19 |
에러 기록 - MongoServerError: E11000 duplicate key error (0) | 2023.06.18 |