brunch

You can make anything
by writing

C.S.Lewis

by 쿠우보이 Sep 11. 2017

오늘의 삽질

JWT 은 어디에...

JWT를 이용해서 토큰 기반의 인증을 구현하고 있다. 그냥 토큰 관련 예제는 이해가 가겠는데 이게 passport library 랑 같이 쓰려니 약간 복잡해지더라. 

JWT로 회원 가입 및 로그인까진 모두 동작이 되는데, 로그인 시 유저가 가지고 있는 기본적인 메타데이터를 받고 싶었다. 예를 들어 유저가 속한 회사 정보를 로그인 이후 다시 유저 DB를 따로 뒤지지 않고 그냥 로그인하면서 가져오고 싶은 욕심이란 이야기다. 

분명 미들웨어에서 토큰을 나만이 가지고 있는 보안키(secret_KEY)를 사용하여 풀어 유저 정보를 확인하고 return done(null, user)를 넘기는데 그다음 받는 node controller에서 받는 parameter는 req, res 밖에 없었다. 이게 뭐야... 

그래서 따로 어딘가에 저장된 JWT 토큰을 찾아야 할 것 같았다. 그렇게 삽질을 하루 반... 


역시 답은 가까운 곳에 있었다. 그냥 req.headers를 찍어보니 authorization이라는 key가 보였고.. 거기에 바로 그렇게 찾아 헤매던 우리의 사랑스러운 토큰이 숨어있었다. ('authorization' key 에 있던 이유는 알고보니 내가 프론트 리덕스 쪽에서 그러한 이름의 key로 저장한 이유였다)

백만년전부터 난 원래 여기에 있었다 멍충아


삽질을 하루 더 하지 않아 다행이다. 긍정적으로 생각하자! 

비록 jwt 라이브러리를 이용해서 decode라는 함수를 다시 사용해야 했지만, 당장은 일단 payload를 받아 쓸 수 있게 되었다. 이제 저 payload에 로그인 시 바로 써먹을 수 있는 정보들을 넣어놓을 수 있게 되었다. 여기에는 SECRET_KEY가 없으면 볼 수 없는 정보이기에, 민감한 내용들을 다 저장해놓을 수 있다. 내 국민은행 통장의 비밀번호라든지, 우리 집 고양이의 몸무게라든지 하여간 뭐든 넣어놓을 수 있다. 기분이 상쾌하므로 잠시 바람을 쐬고 와야겠다. 



매거진의 이전글 조심해야 하는 삽질
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari