This project demonstrates a Rails 7 API-only application using Devise for authentication and JWT for secure token-based login.
rails new api-test --api -d postgresql
cd api-testAdd to your Gemfile:
gem 'devise'
gem 'devise-jwt'Then install:
bundle install- Install Devise:
rails generate devise:install- Generate
Usermodel with Devise:
rails generate devise User
rails db:migrate- Add JWT configuration in
config/initializers/devise.rb:
config.jwt do |jwt|
jwt.secret = Rails.application.credentials.devise_jwt_secret_key
jwt.dispatch_requests = [
['POST', %r{^/users/sign_in$}]
]
jwt.revocation_requests = [
['DELETE', %r{^/users/sign_out$}]
]
jwt.expiration_time = 1.day.to_i
end- Update the
Usermodel for JWT:
class User < ApplicationRecord
devise :database_authenticatable,
:registerable,
:recoverable,
:rememberable,
:validatable,
:jwt_authenticatable, jwt_revocation_strategy: JwtDenylist
endrails generate migration CreateJwtDenylist
rails db:migrate- Register users via
POST /users - Login via
POST /users/sign_inand get JWT tokens - Logout via
DELETE /users/sign_outto revoke tokens
git init
git config --global user.name "Ramit"
git config --global user.email "your_email@example.com"
git add .
git commit -m "Setup Rails API app with Devise and JWT authentication"