데브허브 | DEVHUB | Ruby on Rails 8 내장 Authentication으로 로그인/인증 기능 구현하기Ruby on Rails 8 내장 Authentication으로 로그인/인증 기능 구현하기
- Rails 8에 내장된 인증 기능은 기존 Devise의 복잡성을 해소하고 더 간결하며 커스터마이징하기 쉬운 대안으로 등장했습니다. ✨
- 기존 Ruby on Rails 프로젝트의 90% 이상이 Devise 젬을 사용하여 로그인 기능을 구현했으나, Devise는 다국어, 소셜 로그인, 다른 젬과의 연동 등으로 인해 복잡해지는 단점이 있었습니다. 🧩
- Rails 커뮤니티는 복잡해진 라이브러리에서 벗어나 더 심플하고 커스터마이징이 용이한 새로운 솔루션을 찾는 경향이 있으며, Rails 8 내장 인증 기능이 이러한 흐름의 결과입니다. 🔄
rails g authentication 명령으로 세션, 사용자, 비밀번호 관련 컨트롤러, 뷰, 메일러, 라우팅, 마이그레이션 파일이 자동으로 생성됩니다. 🛠️
- Rails 8 내장 인증 기능은 로그인 페이지는 자동으로 생성하지만, 회원가입 페이지는
UsersController를 직접 만들어 구현해야 합니다. 📝
require_authentication 필터는 모든 액션에 로그인 요구 사항을 적용하며, 회원가입이나 로그인 페이지와 같이 인증이 필요 없는 페이지에는 skip_before_action을 사용해야 합니다. 🚫
- 로그인 후 리다이렉션은
after_new_session 및 after_authentication_url 헬퍼를 통해 이전 페이지 또는 기본 경로로 유연하게 처리됩니다. ➡️
- Pico CSS와 같은 간단한 CSS 라이브러리를 활용하여 별도의 클래스 없이도 깔끔하고 기본적인 UI 스타일링을 쉽게 적용할 수 있습니다. 🎨
- 로그아웃 기능은
session_path에 DELETE HTTP 메서드를 사용하여 구현하며, Rails의 button_to 헬퍼를 활용하는 것이 일반적입니다. 🚪