This package provides a simple way to use JWT (JSON Web Tokens) as an authentication guard in a Laravel application.
Require package zendrop/laravel-jwt
composer require zendrop/laravel-jwt
After installation, you need to add service provider to your config/app.php
'providers' => [
...
Zendrop\LaravelJwt\LaravelJwtAuthServiceProvider::class,
]
and publish the package configuration with command
php artisan vendor:publish
Don't forget to run migrations
php artisan migrate
Modify the generated config/laravel-jwt.php
in the config folder to suit your needs:
- Algorithm: Set the JWT algorithm you wish to use (default is HS256).
- Keys: Specify the encode and decode keys. By default, it uses the APP_KEY from your Laravel .env file.
- Payload: Configure issuer (iss) and time-to-live (ttl) for the JWT.
- Blacklist Driver: Specify the driver used for handling blacklisted tokens (default is a database driver).
Include the HasJwt
trait in your User model or any other authenticatable model:
use Zendrop\LaravelJwt\HasJwt;
class User extends Authenticatable {
use HasJwt;
...
}
This provides the makeJwt()
method to generate JWT for the user.
In your auth.php
config file, you can define the JWT guard:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
...
],
'api' => [
'driver' => 'laravel-jwt', // Use the JWT guard
'provider' => 'users',
],
...
]
For stateful JWT:
'guards' => [
'web' => [
'driver' => 'laravel-jwt-cookie',
'provider' => 'users',
],
]