-
Notifications
You must be signed in to change notification settings - Fork 4
GitHub 소셜 로그인
jch422 edited this page Oct 31, 2020
·
2 revisions
npm i passport passport-github passport-jwt jsonwebtoken
-
server/src/loaders/index.js
app.use(passport.initialize())
- 요청(req 객체)에 passport 설정을 심는다.
- session을 사용하지 않고 jwt를 사용할 것이기 때문에, app.use(passport.session())는 생략.
-
server/src/passport/index.js
- Passport는 로그인 시의 동작을 strategy 라는 용어로 표현.
- local 전략, GitHub 전략, Kakao 전략 등 여러 passport-strategy를 한데모아 관리.
- 라우터를 통해 로그인 요청이 들어옴
- 라우터에서 passport.authenticate('github') 호출
- github-strategy 수행
- done 콜백 호출(두 번째 인수로 주로 사용자 정보를 넣는다)
- done(null, user) => 로그인 성공
- 두 번째 인수를 사용 X( ex. done(null, false) ) => 로그인 실패
- 첫 번째 인수를 사용 O( ex. done(error) ) => 서버 에러
- (성공적으로 done 콜백 호출시) passport.authenticate 의 콜백 함수에서 나머지 로직이 실행된다
- 이 부분에서 snsId와 provider를 payload로 하는 jwt 토큰을 생성하고 client로 전송.
- client에서는 jwt를 storage에 저장
로그인 이후
- 서버로 api 요청시 storage에 저장하고 있던 jwt를 req.header에 넣어서 요청
- server에서는 passport-jwt 를 통해 설정한 jwt-strategy를 사용하여 token 유효성 검사
- 성공적으로 로그인 후에 client에는 json 반환
- jwt.io에서 decode 하여 확인하면
-
Postman을 이용한 로그아웃 테스트
- Authorization -> Bearer 토큰을 넣어준다
- 토큰 없이 logout 요청 시 => unauthorized
🏠Home
📝 제품백로그
📖 Api docs
😄일일 회의록
😠일일 회고
👼데일리 스크럼
☔데모
- 1주차 데모 생략
- 2주차 데모 2020.11.06
- 3주차 마지막 데모 2020.11.13