Devise
Rails standard authentication system
Devise is the most widely used authentication gem in Rails.
10 modules:
database_authenticatableโ password hashing and loginregisterableโ sign uprecoverableโ password resetrememberableโ auto login (Remember Me)validatableโ email/password validationconfirmableโ email verificationlockableโ account lock on login failurestimeoutableโ session timeouttrackableโ login trackingomniauthableโ OAuth (Google, GitHub, etc.)
Auto-generated helpers:
current_userโ currently logged-in useruser_signed_in?โ login status checkauthenticate_user!โ redirect if not logged in
Customization is done through controller inheritance and view overrides.
Key Points
Add gem "devise" to Gemfile and bundle install
rails generate devise:install โ generate initial config files
rails generate devise User โ User model + migration generated
rails db:migrate โ create devise tables
before_action :authenticate_user! โ add to controllers requiring auth
Use helpers like current_user, user_signed_in?
Pros
- ✓ Rich features (10 modules)
- ✓ Large community with rich documentation
- ✓ Security best practices applied (bcrypt, CSRF)
- ✓ Easy social login with OmniAuth
Cons
- ✗ Customization can be complex
- ✗ Too much magic makes internals hard to understand
- ✗ Excessive features for API-only apps
- ✗ Need generate devise:views for view customization