callbacks

jwt/session 콜백 역할

초기 로그인 때만 들어오는 user와 account 값을 JWT에 보존하고, 이후 요청에서는 token을 기준으로 session.user와 accessToken을 다시 구성합니다.

01

OAuth 로그인 직후

account와 user가 있을 때만 초기 값을 복사

GitHub 로그인 결과의 access_token과 사용자 id를 token에 붙여 다음 요청에서도 잃지 않게 합니다.

account user
02

jwt 콜백 반환

반환된 token이 세션 계산의 기준이 됨

이후에는 user가 없어도 token.accessToken과 token.id가 남아 session 콜백에서 읽을 수 있습니다.

token.id token.accessToken
03

session 콜백 반환

클라이언트가 읽을 세션 필드를 명시

useSession이나 서버 세션 조회에서 필요한 필드만 session에 옮겨 UI와 권한 판단에 사용합니다.

session.user.id session.accessToken

코드에서 대응되는 줄

jwt token.accessToken = account.access_token token.id = user.id
session session.accessToken = token.accessToken session.user.id = token.id

TypeScript에서는 기본 타입에 없는 필드를 쓰므로 실제 프로젝트에서 Session/JWT 타입 확장을 함께 검토합니다.

판단 기준과 점검

  • 초기 로그인 전용 값은 jwt 콜백에서 token에 저장합니다.
  • 브라우저에 보여도 되는 값만 session 콜백에서 노출합니다.
  • provider 토큰은 권한이 큰 값이므로 화면 출력이나 로그 기록을 피합니다.