Supabase.Auth 회원가입 시 자동으로 세션 생성 문제
문제 발생
Next.js와 Supabase를 사용하여 회원가입 및 로그인/로그아웃 페이지를 구현하던 중, 회원가입 후 자동으로 로그인되는 문제를 겪었다.
이로 인해 회원가입 후 로그인 페이지로 이동해도 이미 로그인된 상태로 세션이 유지되었고, 결과적으로 예상치 못한 중복 로그인 문제가 발생했다.
내용을 찾아보니 `Supabase.auth.signUp`을 사용하면 자동으로 `session`에 저장이 되는 것...
해결
해결 방법 1
회원가입 후 로그아웃 처리 처음에는 아래와 같은 방식으로 문제를 해결했다.
회원가입 성공 후, `signOut` 메서드를 호출하여 자동 생성된 세션을 초기화하고, 로그인 페이지로 이동하도록 처리를 했다.
const { error } = await supabase.auth.signUp({
email,
password,
options: {
data: {
nickname,
},
},
});
if (error) {
toast.error("회원가입 실패: " + error.message);
} else {
toast.success("회원가입 성공!");
await supabase.auth.signOut(); // 로그아웃
router.push("/login");
}
이 방법을 사용하여 일단 문제를 해결할 수 있었다.
그리고 트러블 슈팅을 적고 있다보니 더 나은 방법을 알게 되었다.
해결 방법 2
`autoSignIn` 옵션 사용 Supabase의 `signUp` 메서드에서 `autoSignIn` 옵션을 `false`로 설정하면, 회원가입 시 자동으로 세션이 생성되지 않도록 할 수 있다고 한다.
이 방법을 적용하면 별도로 `signOut`을 호출할 필요 없이 회원가입만 진행하고 로그인 페이지로 이동할 수 있었다.
const { error } = await supabase.auth.signUp({
email,
password,
options: {
data: {
nickname,
},
autoSignIn: false, // 자동 로그인 방지
},
});
if (error) {
toast.error("회원가입 실패: " + error.message);
} else {
toast.success("회원가입 성공!");
router.push("/login");
}
이렇게 하면 자동으로 로그인 세션이 생성되지 않아 더 깔끔한 해결책이 될 수 있다.
간단하게 정리하자면
첫 번째 방법은 회원가입 후 로그아웃을 호출하는 방식,
두 번째 방법은 autoSignIn 옵션을 사용하여 세션 자동 생성을 방지하는 것이다.
나중에 사용할 때는 두번째 방법을 사용해 보는 것으로!!
'프론트엔드 > Next.js' 카테고리의 다른 글
[최종 프로젝트] Chart.js를 활용한 데이터 시각화 (1) | 2024.10.31 |
---|---|
[최종 프로젝트] 연도, 월 selectbox 컴포넌트 만들기 (0) | 2024.10.31 |
Next.js에서 middleware.ts 사용 시 주의사항 (tsconfig.json 설정) (0) | 2024.10.17 |
Next.js - 4가지 렌더링 방식 (SSG, SSR, CSR, ISR) (0) | 2024.09.26 |
Next.js - 클라이언트 컴포넌트, 서버 컴포넌트 (0) | 2024.09.25 |