인증 시스템 개요
better-auth 통합
검증된 인증 라이브러리이메일/비밀번호, 소셜 로그인
자동 엔티티 생성
CLI로 엔티티 자동 생성User, Session, Account, Verification
Context 기반
요청마다 사용자 정보Sonamu.getContext()
Guards 시스템
선언적 권한 제어@api guards 옵션
빠른 시작
1. 인증 엔티티 생성
better-auth가 필요로 하는 엔티티들을 자동으로 생성합니다:기존 엔티티가 있으면 누락된 필드만 추가됩니다. 필드 타입이 변경된 경우 자동으로 업데이트됩니다.
2. 마이그레이션 실행
엔티티 생성 후 마이그레이션을 실행합니다:3. 인증 설정
sonamu.config.ts에서 인증을 활성화합니다:
API 엔드포인트
better-auth가 제공하는 API 엔드포인트들이 자동으로 등록됩니다:Context에서 사용자 정보 접근
인증된 사용자 정보는 Context를 통해 접근합니다:AuthContext 타입
User와 Session 타입은 better-auth에서 제공합니다.
Guards를 통한 접근 제어
기본 Guard 사용
guardHandler 구현
Guard 로직은sonamu.config.ts의 guardHandler에서 구현합니다:
소셜 로그인 설정
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.ts에server.auth설정 -
guardHandler구현 - Context에서 user/session 접근 확인
- 권한 기반 인증 필요 시 User 엔티티에 role 추가
다음 단계
세션 관리
세션과 토큰 관리
Context
Context 자세히 알아보기
@api 데코레이터
API 데코레이터 옵션
에러 처리
인증 에러 처리