Download the PHP package chantouch/laravel-jwt-redis without Composer
On this page you can find all versions of the php package chantouch/laravel-jwt-redis. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download chantouch/laravel-jwt-redis
More information about chantouch/laravel-jwt-redis
Files in chantouch/laravel-jwt-redis
Package laravel-jwt-redis
Short Description This package allows JWT-authenticated users to be stored and management in Redis with their roles, permissions, statuses and anything you want.
License MIT
Informations about the package laravel-jwt-redis
laravel-jwt-redis
This package allows JWT-authenticated users to be stored and management in Redis with their roles, permissions, statuses and anything you want.
This package is originally forked from sametsahindogan/laravel-jwtredis
Also, this package has an observer for listening and updating to your user model on Redis. This observer is triggered
when you assign roles & permissions to user, or update and delete to your user
model.
Requirements
This package works with together php-open-source-saver/jwt-auth and spatie/laravel-permission package under the hood.
Make sure to install and configure these dependencies. You must publish, migrate etc. all packages.
- predis/predis >= 2.0 (Recommended 2.2)
- php-open-source-saver/jwt-auth >= 2.0 (Recommended 2.2.x)
- spatie/laravel-permission >= 6.0 (Recommended 6.4) (Optional)
Installation
Once this has finished, you will need to add&change these values in .env
file:
Next, you will need to change the guards
and providers
arrays in your config/auth.php
config as follows:
This package uses auto-discovery to register the service provider,
but if you'd rather do it manually, the service provider is:
add to providers
array in your config/app.php
config as follows:
You will want to publish the config using the following command:
Configurations
When everything is done, remember to add this Trait to your user model if you are going to use with spatie/laravel-permission.
When everything is done, remember to add this Trait to your user model, if you are not use with laravel-permission
.
You need to add $routeMiddleware
array in app/Http/Kernel.php
Usage
You do not have any instructions for use. This package only affects the background, functions in an almost identical way to Laravel session authentication, with a few exceptions. All you have to do is change your middleware.(I mention this below)
You can use Laravel's Auth facade,
Php saver's JWTAuth facade and all spatie/laravel-permission package methods as usual.
-
For user authentication by token;
(Use this middleware if the user's identity is not important. This middleware only checks if Token is valid. Doesn't send any query to any database.) -
To check user authorization, you need to this one of these middlewares;
( Use this middleware if the user's identity is important. This middlewares fetch user from Redis and mark as authorized to Laravel's Request object. And you will reach all default Auth facade's methods you want. Just call Laravel's Auth facades.) - To refresh the token, you can add the
refreshable
middleware to the required route. You don't need to take any action on the controller of this route;
(Also this middleware can refresh user from Redis if necessary.)
If you want to do different things, you can override those mentioned middlewares.
After using it as above, every authorization you made in your
application, such as Auth::user()
or $user->can('permission')
, is always checked from Redis, not from the database.
Options
You can customize some options in that package. Check config/jwt-redis.php
file.
-
User Model
-
Observer
-
Events Queue
-
Cache Time
-
Cache Prefix
-
Banned User Check
-
Relation Caching
- Customize Exceptions
Example Project
Here is an example using laravel-jwt-redis. You can examine in detail.
Performance Improvements Tips
This package requirement the predis package by default.
You may install the PhpRedis PHP extension via PECL. The extension is more complex to install but may yield better performance for applications that make heavy use of Redis. Predis is the alternative for PhpRedis on pure PHP and does not require any additional C extension by default.
"PhpRedis is faster about x6 times. Using binary serializer reduces stored data size about 3x times. If Redis installed on separate machines, reducing network traffic is a very significant speedup."
In my opinion, using PhpRedis and serializer as igbinary (Lodash package it provides this for Laravel.) in production environment gives a great performance.
You can review this article for performance comparison PhpRedis vs. Predis.
License
MIT © Sek Chantouch