kamoca/laravel-jwt-database-blacklist

JWT blacklist storage in database for tymon/jwt-auth

Installs: 16

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/kamoca/laravel-jwt-database-blacklist

v1.0.0 2025-09-02 22:41 UTC

This package is auto-updated.

Last update: 2026-01-02 23:39:30 UTC


README

Latest Version PHP Version License Downloads

A Laravel package to store JWT blacklisted tokens in the database instead of cache.

Built to work with tymondesigns/jwt-auth.

✨ Features

  • πŸ›‘οΈ Blacklist JWT tokens in a dedicated database table
  • ⚑ Works with tymon/jwt-auth
  • πŸ—„οΈ No cache needed
  • βœ… Ready for production use

πŸš€ Installation

composer require kamoca/laravel-jwt-database-blacklist

βš™οΈ Setup

  1. Publish migration
php artisan vendor:publish --tag=jwt-blacklist-migrations
php artisan migrate

This will create the jwt_blacklists table in your database.

  1. Configure JWT

    2.1. Set storage

    In config/jwt.php, set the storage option:

    'storage' => Kamoca\JwtDatabaseBlacklist\Providers\Storage\Illuminate::class,

    2.2. Ensure blacklist is enabled

    In config/jwt.php, set the blacklist_enabled option:

    'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true),

    Then in your .env file:

    JWT_BLACKLIST_ENABLED=true

Now, when you invalidate a token, it will be stored in the database and blocked from reuse.

πŸ”§ Usage

Example logout controller:

use Tymon\JWTAuth\Facades\JWTAuth;
use Auth;

public function logout()
{
    // These will store {"valid_until":...} in the `jwt_blacklists` table
    Auth::logout();
    auth()->logout();

    // These will store 'forever' in the `jwt_blacklists` table
    JWTAuth::invalidate(JWTAuth::getToken(), true);
}

Any request using the same token after invalidation will fail.

πŸ“ License

Este projeto estΓ‘ licenciado sob a LicenΓ§a MIT - veja o arquivo LICENSE para detalhes.

πŸ‘¨β€πŸ’» Author

Kauan Morinel Calheiro