OmniAuth 소셜 로그인 (Google/Kakao) + 세션 관리
ID: 23c025d7-0154-44d0-8e04-e70cb1b9fad2
## 목표
Devise + OmniAuth로 Google/Kakao 소셜 로그인을 구현합니다.
## 전제 조건
- User 모델이 이미 Devise와 통합되어 있다고 가정합니다
- User 모델에 provider, provider_id, email, nickname 등 컬럼이 있습니다
- devise gem, omniauth gem이 Gemfile에 이미 있습니다
## 작업 범위
### 1. Gemfile 추가
- `omniauth-kakao` gem 추가
- `bundle install` 실행
### 2. Devise 설정
- config/initializers/devise.rb 설정 (mailer, secret_key 등)
- OmniAuth provider 설정 (Google OAuth2, Kakao)
- 환경변수: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, KAKAO_CLIENT_ID, KAKAO_CLIENT_SECRET
### 3. OmniAuth 콜백 컨트롤러
- app/controllers/users/omniauth_callbacks_controller.rb
- Google 콜백: 사용자 find_or_create
- Kakao 콜백: 사용자 find_or_create
- User.from_omniauth 클래스 메서드
### 4. 세션 관리
- 로그인/로그아웃 플로우
- 비인증 사용자 → 로그인 페이지 리다이렉트
- authenticate_user! before_action 설정
### 5. 로그인 페이지 UI
- app/views/devise/sessions/new.html.erb
- Google 로그인 버튼 + Kakao 로그인 버튼
- Tailwind CSS 스타일링 (모바일 반응형)
- 로고 + 앱 소개 텍스트
### 6. 라우팅
- config/routes.rb에 devise_for :users 추가
- OmniAuth 콜백 라우트 설정
### 7. 테스트
- OmniAuth mock을 사용한 통합 테스트
- 로그인/로그아웃 플로우 테스트
## 참고
- 레거시: src/contexts/AuthContext.tsx 분석
- docs/migration/index.md §3-1 인증/세션 API
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 02일 01:05:16
-
Aauth-dev 상태 변경: 진행 중 → 리뷰
2026년 03월 02일 00:59:15
-
Aauth-dev OmniAuth 소셜 로그인 구현 완료 (Google + Kakao)
2026년 03월 02일 00:59:14
상세 보기
## 변경 사항
### 생성 파일
- `app/controllers/users/omniauth_callbacks_controller.rb` - Google/Kakao 콜백 처리
- `app/views/devise/sessions/new.html.erb` - 로그인 UI (소셜 로그인 버튼)
- `app/views/devise/shared/_links.html.erb` - OmniAuth 링크
- `app/views/devise/shared/_error_messages.html.erb` - 에러 표시
- `app/views/layouts/devise.html.erb` - Devise 전용 레이아웃
- `lib/omniauth/strategies/kakao.rb` - Kakao OAuth2 커스텀 strategy
- `test/integration/omniauth_test.rb` - OmniAuth 통합 테스트 5건
- `.env.example` - 환경변수 템플릿### 수정 파일
- `Gemfile` - omniauth-oauth2 추가 (kakao strategy 기반)
- `config/initializers/devise.rb` - Google/Kakao OmniAuth provider 설정
- `config/routes.rb` - devise_for + omniauth_callbacks, authenticated/devise root
- `app/controllers/application_controller.rb` - authenticate_user!, layout_by_resource
- `app/models/user.rb` - from_omniauth 클래스 메서드 추가, :omniauthable 활성화
- `app/models/application_record.rb` - UUID 자동생성 조건 수정 (SQLite 호환)### 해결한 문제
1. omniauth-kakao gem이 빈 gem → 커스텀 strategy 작성
2. SQLite UUID 자동생성 불가 → ApplicationRecord 콜백 조건 수정
3. 로그인 페이지 sidebar 에러 → Devise 전용 레이아웃 분리### 테스트 결과
- 전체 27건 테스트 통과 (0 failures, 0 errors) -
Aauth-dev OmniAuth 소셜 로그인 구현 시작
2026년 03월 02일 00:48:41
상세 보기
## 작업 시작
- Devise + OmniAuth 기반 Google/Kakao 소셜 로그인 구현
- Task #1 (User 모델)에 의존하므로, User 모델이 존재한다고 가정하고 작업 진행
- omniauth-kakao gem 추가, 콜백 컨트롤러, 라우팅, 로그인 UI, 테스트 작성 예정 -
Aauth-dev 티켓 클레임 완료
2026년 03월 02일 00:48:34