🔑

Devise

Rails 표준 인증 시스템

Devise는 Rails에서 가장 널리 사용되는 인증 gem입니다.

10가지 모듈:

  • database_authenticatable — 비밀번호 해싱 및 로그인

  • registerable — 회원가입

  • recoverable — 비밀번호 재설정

  • rememberable — 자동 로그인 (Remember Me)

  • validatable — 이메일/비밀번호 검증

  • confirmable — 이메일 인증

  • lockable — 로그인 실패 시 계정 잠금

  • timeoutable — 세션 타임아웃

  • trackable — 로그인 추적

  • omniauthable — OAuth (Google, GitHub 등)

자동 생성되는 헬퍼:

  • current_user — 현재 로그인 사용자

  • user_signed_in? — 로그인 여부

  • authenticate_user! — 비로그인 시 리다이렉트

커스터마이징은 컨트롤러 상속과 뷰 오버라이드로 합니다.

핵심 포인트

1

Gemfile에 gem "devise" 추가 후 bundle install

2

rails generate devise:install → 초기 설정 파일 생성

3

rails generate devise User → User 모델 + 마이그레이션 생성

4

rails db:migrate → devise 관련 테이블 생성

5

before_action :authenticate_user! → 인증 필요한 컨트롤러에 추가

6

current_user, user_signed_in? 등 헬퍼 사용

장점

  • 풍부한 기능 (10개 모듈)
  • 커뮤니티가 크고 문서 풍부
  • 보안 모범 사례 적용 (bcrypt, CSRF)
  • OmniAuth로 소셜 로그인 쉽게 추가

단점

  • 커스터마이징이 복잡할 수 있음
  • 마법이 많아 내부 동작 파악 어려움
  • API 전용 앱에서는 과도한 기능
  • 뷰 커스터마이징 시 generate devise:views 필요

사용 사례

회원 기반 웹 서비스 Google/GitHub OAuth 로그인 이메일 인증 플로우 관리자 패널 인증