Wallogit.com
2017 © Pedro Peláez
jwt auth for encode decode and token expire_in authenticate
composer require jerrygaoyang/laravel-jwt, (*1)
Jerry\JWT\Providers\JWTProvider::class, (*2)
php artisan vendor:publish --provider="Jerry\JWT\Providers\JWTProvider", (*3)
'jwt' => \Jerry\JWT\Middleware\JWTMiddleware::class,, (*4)
<?php
/**
* Created by PhpStorm.
* User: gaoyang
* Date: 2017/11/14
* Time: 9:32
*/
return [
"secret" => "PIe5T3xJWAMA95Uwf7pde7gmS7ZTiURg", //jwt SHA256 signature use the secret
"expire_in" => 604800, //jwt expire_in the times(seconds) , default 604800(a week)
];
use Jerry/JWT/JWT; $payload = [ "user_id" => 1 ]; $token = JWT::encode($payload); print_r($token); echo "<br>"; $payload = JWT::decode($token); print_r($payload);
{
"Authorization": "jwt PIe5T3xJWAMA95Uwf7pde7gmS7ZTiURg"
}
Route::middleware(['jwt'])->group(function () {
Route::get('/test2', 'TestController@test2');
});
$payload = $request->get('jwt');
you can copy below code to your Laravel app/Exceptions/handler.php render function;, (*5)
it's easy to change the token exception for us;, (*6)
it's easy to change the return data for api response., (*7)
of course, we should:, (*8)
use Jerry\JWT\Exceptions\TokenFormatException;, (*9)
use Jerry\JWT\Exceptions\TokenExpiredException;, (*10)
use Jerry\JWT\Exceptions\TokenForwardException;, (*11)
use Jerry\JWT\Exceptions\PayloadFormatException;, (*12)
if ($exception instanceof TokenFormatException) {
return response()->json([
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
'data' => ''
]);
}
if ($exception instanceof TokenExpiredException) {
return response()->json([
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
'data' => ''
]);
}
if ($exception instanceof TokenForwardException) {
return response()->json([
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
'data' => ''
]);
}
if ($exception instanceof PayloadFormatException) {
return response()->json([
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
'data' => ''
]);
}