https://github.com/wonjongRyu/bookstagram/commit/00507f5393499d0f758fc6d83bea150d4e335bb7
- npm install passport passport-jwt jsonwebtoken
- randomkeygen.com에서 문자열을 하나 가져와서 env에 JWT_SECRET으로 저장
- authenticateJwt 함수에서는 passport.authenticate('jwt') 함수를 실행
- 이 함수는 Strategy를 활용해서 jwt 토큰을 추출
- 토큰이 추출되면 verifyUser를 payload와 함께 실행
- payload는 토큰에서 해석된 id를 받아서, user를 찾아서 리턴
- 그러면 콜백 함수가 실행되는데, 사용자가 있으면 그 사용자를 req에 추가
- server.js 에서 context에 req를 담아준다.
mutation과 query를 수정했을 때는 항상 npm run prisma을 돌려준 후 playground에 들어간다.
사용법:
request secret을 하면 메일로 시크릿 코드가 날아온다.
confirm secret을 하면 TOKEN이 생성된다.
그다음 HTTP header에 {"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNrMWtnYTB5M2p3cDEwYjA5NjAyOThtMnQiLCJpYXQiOjE1NzEwMTg2MjN9.hckG4iBpbVGzIAJSLlr0W03lY6W8nAW2stJd9rhKdaE"}
을 넣고 함수를 실행하면 그 아이디로써 request를 보내게 된다.
toggleLike 같은 함수는 아이디가 있어야 하기 때문에 헤더에 토큰을 꼭 넣어야 한다.
'Instagram Clone > GraghQL API' 카테고리의 다른 글
ETC (0) | 2019.10.15 |
---|---|
SearchUser, SearchPost (0) | 2019.10.15 |
ToggleLike and AddComment (0) | 2019.10.14 |
Request Secret Resolver (0) | 2019.10.11 |
Create Account Resolver (0) | 2019.10.11 |