Skip to main content
Sonamu에서 사용자 인증을 설정하는 방법을 알아봅니다. Sonamu는 better-auth를 기반으로 한 통합 인증 시스템을 제공합니다.

인증 시스템 개요

better-auth 통합

검증된 인증 라이브러리이메일/비밀번호, 소셜 로그인

자동 엔티티 생성

CLI로 엔티티 자동 생성User, Session, Account, Verification

Context 기반

요청마다 사용자 정보Sonamu.getContext()

Guards 시스템

선언적 권한 제어@api guards 옵션

빠른 시작

1. 인증 엔티티 생성

better-auth가 필요로 하는 엔티티들을 자동으로 생성합니다:
이 명령어는 4개의 엔티티를 생성합니다:
기존 엔티티가 있으면 누락된 필드만 추가됩니다. 필드 타입이 변경된 경우 자동으로 업데이트됩니다.

2. 마이그레이션 실행

엔티티 생성 후 마이그레이션을 실행합니다:

3. 인증 설정

sonamu.config.ts에서 인증을 활성화합니다:
이것으로 기본적인 이메일/비밀번호 인증이 활성화됩니다.

API 엔드포인트

better-auth가 제공하는 API 엔드포인트들이 자동으로 등록됩니다:

Context에서 사용자 정보 접근

인증된 사용자 정보는 Context를 통해 접근합니다:

AuthContext 타입

UserSession 타입은 better-auth에서 제공합니다.

Guards를 통한 접근 제어

기본 Guard 사용

guardHandler 구현

Guard 로직은 sonamu.config.tsguardHandler에서 구현합니다:

소셜 로그인 설정

Google 로그인

GitHub 로그인

사용자 역할 추가

better-auth의 기본 User 엔티티에는 role 필드가 없습니다. 권한 기반 인증이 필요하면 User 엔티티에 직접 추가하세요:

1. Sonamu UI에서 필드 추가

User 엔티티에 role 필드를 추가합니다:
  • 이름: role
  • 타입: string
  • 기본값: "user"

2. Enum 추가 (선택사항)

3. guardHandler에서 역할 확인

클라이언트 통합

React에서 사용

필드 매핑

better-auth는 camelCase를 사용하지만, Sonamu는 snake_case를 사용합니다. 다음 필드들이 자동으로 매핑됩니다:

체크리스트

인증 설정 후 확인 사항:
  • pnpm sonamu auth generate 실행
  • 마이그레이션 생성 및 적용
  • sonamu.config.tsserver.auth 설정
  • guardHandler 구현
  • Context에서 user/session 접근 확인
  • 권한 기반 인증 필요 시 User 엔티티에 role 추가

다음 단계

세션 관리

세션과 토큰 관리

Context

Context 자세히 알아보기

@api 데코레이터

API 데코레이터 옵션

에러 처리

인증 에러 처리