inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

한 입 크기로 잘라먹는 React.js 실전 프로젝트 - SNS 편

(6.10) 비밀번호 재설정 구현하기

비밀번호 재설정 1회용 이메일 링크

11

쉬었음루피

작성한 질문수 3

0

안녕하세요!

비밀번호 재설정 이메일의 링크를 클릭한 후 비밀번호를 변경했는데, 같은 링크로 다시 접속해도 계속 비밀번호가 변경되는 것을 확인했습니다.

재설정 링크를 1회 사용 후 만료되게 하려면 어떻게 해야하나요?

react typescript react-query supabase zustand

답변 1

0

이정환 Winterlood

안녕하세요 이정환입니다

결론부터 말씀드리면, 재설정 링크 자체는 이미 1회용으로 정상 소모되고 있습니다. 같은 링크로 계속 비밀번호가 변경되는 것처럼 보이는 건, 링크가 재사용되는 게 아니라 첫 클릭 때 발급된 로그인 세션이 브라우저에 그대로 남아있기 때문이에요.


Supabase 비밀번호 재설정 흐름을 단계별로 보면 이렇습니다.

1. resetPasswordForEmail() 호출 → 이메일 링크 발송

2. 링크 클릭 → Supabase가 토큰을 1회 검증하고 소모한 뒤, 그 대가로 세션(access / refresh token)을 발급해 브라우저(localStorage)에 저장

3. 앱에서 updateUser({ password }) 호출 → 이때 사용하는 건 링크가 아니라 "방금 발급된 세션"

즉, 비밀번호 변경은 링크가 아니라 로그인된 세션으로 처리됩니다. 그래서

- 링크의 토큰은 사실 이미 1회용으로 소모된 상태입니다 (재검증하면 만료/에러가 납니다)

- 그런데 첫 클릭으로 만들어진 세션은 브라우저에 계속 살아있습니다 (refresh token이 자동 갱신됨)

- 그 상태로 페이지에 다시 들어가면 "이미 로그인된 상태"라 updateUser가 또 동작 → 마치 "링크가 계속 통하는" 것처럼 보이는 거예요 만약 이 동작이 부자연스럽다고 느껴지신다면 비밀번호 변경 이후 강제로 SignOut 하는 동작을 만들어주시면 됩니다

강의 수강 후 포트폴리오 준비 방향에 대해 조언 부탁드립니다.

2

40

1

회원가입 구현 (구현 후 최종 화면 출력 X)

0

70

2

(6.11) 회원가입시 프로필 정보 자동 생성하기 Q. 호출 순서 문의

0

58

1

명시적 타입 선언(콜론 타입 선언)과 as 타입 단언 차이

0

59

2

useMutation 적용 후 새로운 글 등록시 content가 안보여요

0

72

2

6.8 zustand 세션 질문입니다.

0

114

2

next.js 강의에서도 리액트 라이브러리들을 다뤄주시나요?

0

96

2

shadcn에서 radix ui와 base ui 차이는 뭔가요?

1

443

2

updateTodo 함수 생성시 화살표 함수 사용 안하는 이유

0

87

2

4.11 바로 투두 삭제가 안됨 질문

0

102

3

매개변수 updatedTodo 관련 질문

0

81

3

인증 정보가 만료되었을 때 라우트 가드 처리가 궁금합니다!

0

93

2

supabase를 사용하지 않을 경우 세션 데이터의 변경을 감지하고 스토어에 보관하는 방법이 궁금합니다!

0

86

2

4.6 id를 string으로 변경시 오류

0

78

2

리액트 타입스크립트 관련 질문있습니다.

0

74

1

소셜 로그인 구현하기 관련하여 질문이 있습니다!

0

111

2

ui 파일 질문드립니다.

0

94

1

tanstack query devtools에서 질문있습니다!

0

75

2

댓글 삭제 시 isPending 질문

0

72

2

두번째 예외상황에 대해 질문있습니다!

0

72

1

리액트 쿼리 질문입니다

1

87

2

개발자도구에서 components 가 안보입니다.

0

116

3

state 관리에 대한 정리

0

89

3

[(2.4) Shadcn/ui를 소개합니다] 강의 Shadcn 세팅 관련 질문 있습니다.

0

214

3