Devise로 로그인 기능 구현하기 — 인증은 쉽게, 안전하게

2025. 7. 13. 09:00·Ruby On Rails
728x90
반응형

웹 서비스를 만들 때 가장 먼저 떠오르는 기능 중 하나는 회원가입과 로그인이죠.
하지만 이걸 직접 구현하려면 암호화, 세션 처리, CSRF 보호 등 생각보다 고려할 게 많아요.
이럴 때 Rails 개발자들이 가장 많이 선택하는 보석이 있으니, 바로 Devise입니다.

이번 글에서는 Devise를 활용해 간단하게 로그인 시스템을 구현하는 방법을 실제 코드와 함께 알아봅니다.


🔧 1. Devise 설치하기

# Gemfile
gem 'devise'
$ bundle install
$ bin/rails generate devise:install

설치 후 출력되는 메시지를 따라 config/environments/development.rb에 메일 설정을 추가하고, flash 메시지를 layout에 렌더링해 주세요.


# config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

# app/views/layouts/application.html.erb
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>

👤 2. User 모델 생성

$ bin/rails generate devise User
$ bin/rails db:migrate

이제 User 모델은 이메일, 비밀번호, 암호화, 세션, 리마인더 등 다양한 인증 기능을 자동으로 포함하게 됩니다.


🧪 3. 로그인/회원가입 테스트

$ bin/rails server

브라우저에서 http://localhost:3000/users/sign_in 으로 접속해보세요. 이미 로그인/회원가입/비밀번호 찾기 등의 화면이 완성되어 있습니다!

  • /users/sign_in — 로그인
  • /users/sign_up — 회원가입
  • /users/password/new — 비밀번호 초기화

🔐 4. 인증이 필요한 페이지 제한하기


class PostsController < ApplicationController
  before_action :authenticate_user!, except: [:index, :show]
end

이렇게 하면 로그인하지 않은 사용자는 글쓰기, 수정, 삭제 페이지에 접근할 수 없습니다.


⚙️ 5. Devise 설정 커스터마이징

rails generate devise:views 명령으로 뷰를 복사해 커스터마이징할 수 있어요.

$ bin/rails generate devise:views

뷰 파일은 app/views/devise/ 아래에 위치하며, HTML과 ERB로 자유롭게 꾸밀 수 있어요.

📌 로그인 후 이동 경로 커스터마이징


# app/controllers/application_controller.rb
def after_sign_in_path_for(resource)
  posts_path
end

🛡️ Devise가 기본으로 제공하는 보안 기능

  • 비밀번호 암호화 (bcrypt)
  • 자동 세션 관리
  • CSRF 토큰 검증
  • 이메일 확인, 비밀번호 재설정

이 모든 것이 기본 제공되니, 우리는 기능 개발에 집중할 수 있어요.


🎯 마치며

Devise는 Rails에서 인증 기능을 쉽게, 그리고 매우 안전하게 구현할 수 있게 도와주는 필수 라이브러리입니다.
로그인부터 비밀번호 재설정까지 대부분의 기능을 단 몇 줄의 코드로 처리할 수 있어요.
“이게 정말 다야?” 싶은 순간에도, Devise는 당신의 시간을 아껴주고 있을 거예요.

728x90
반응형

'Ruby On Rails' 카테고리의 다른 글

관리자 페이지 만들기 — RailsAdmin vs ActiveAdmin  (0) 2025.07.17
파일 업로드 구현 — ActiveStorage와 Cloudinary 활용하기  (1) 2025.07.15
Rails의 철학과 Convention over Configuration 이해하기  (6) 2025.07.12
Partial, Layout, Helper — 뷰를 깔끔하게 정리하는 기술  (2) 2025.07.11
Validation & Callback — 데이터의 품질을 지키는 방법  (2) 2025.07.10
'Ruby On Rails' 카테고리의 다른 글
  • 관리자 페이지 만들기 — RailsAdmin vs ActiveAdmin
  • 파일 업로드 구현 — ActiveStorage와 Cloudinary 활용하기
  • Rails의 철학과 Convention over Configuration 이해하기
  • Partial, Layout, Helper — 뷰를 깔끔하게 정리하는 기술
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    flutter개발
    ActiveRecord
    flutter게시판
    table_calendar
    코드를걷는사람
    RubyOnRails
    openweather
    정적사이트
    캘린더앱
    flutterui
    메모앱
    북마크기능
    뉴스앱
    Nextjs
    Firebase
    rails보안
    UIUX
    flutter상태관리
    flutter앱개발
    UI디자인
    모바일앱개발
    다크모드
    flutter기초
    flutter디자인
    백엔드개발
    Flutter
    감성앱
    날씨앱
    fluttertips
    개발블로그
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
Devise로 로그인 기능 구현하기 — 인증은 쉽게, 안전하게
상단으로

티스토리툴바