Skip to content

ramitgupta195/ror-auth

Repository files navigation

Rails 7 API App with Devise & JWT Authentication

This project demonstrates a Rails 7 API-only application using Devise for authentication and JWT for secure token-based login.


🛠️ Setup Instructions

1. Create Rails API-only application

rails new api-test --api -d postgresql
cd api-test

2. Setup Gems

Add to your Gemfile:

gem 'devise'
gem 'devise-jwt'

Then install:

bundle install

3. Setup Devise

  1. Install Devise:
rails generate devise:install
  1. Generate User model with Devise:
rails generate devise User
rails db:migrate
  1. 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
  1. Update the User model for JWT:
class User < ApplicationRecord
  devise :database_authenticatable,
         :registerable,
         :recoverable,
         :rememberable,
         :validatable,
         :jwt_authenticatable, jwt_revocation_strategy: JwtDenylist
end

4. Generate JWT Denylist (for token revocation)

rails generate migration CreateJwtDenylist
rails db:migrate

5. Test authentication

  • Register users via POST /users
  • Login via POST /users/sign_in and get JWT tokens
  • Logout via DELETE /users/sign_out to revoke tokens

6. Git setup (optional but recommended)

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"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published