비밀번호 재설정 1회용 이메일 링크
11
작성한 질문수 3
안녕하세요!
비밀번호 재설정 이메일의 링크를 클릭한 후 비밀번호를 변경했는데, 같은 링크로 다시 접속해도 계속 비밀번호가 변경되는 것을 확인했습니다.
재설정 링크를 1회 사용 후 만료되게 하려면 어떻게 해야하나요?
답변 1
0
안녕하세요 이정환입니다
결론부터 말씀드리면, 재설정 링크 자체는 이미 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





