Saya membayangkan kalian sudah mempunyai projeck laravel, jadi tinggal ikuti saja langkah-langkah berikut ini
1. Install JWT
Untuk penjelasan tentang JWT kalian bisa baca di blog
codepolitanInstal paket jwt-auth pihak ketiga. Anda dapat menjalankan perintah berikut untuk melakukannya:
composer require tymon/jwt-auth
2. Tambahkan paket JWT ke penyedia layanan | provider
Buka file config/app.php dan perbarui array provider dan aliases.
'providers' => [
...
'Tymon\JWTAuth\Providers\LaravelServiceProvider',
],
'aliases' => [
...
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class,
],
3. Publikasikan konfigurasi jwt
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
4. Generate JWT Key
untuk cek token anda, bisa dibuka di file .env
silahkan cek pada bagian bawah sendiri
JWT_SECRET
5. Create JWT Middleware
Sebelum kita mulai menentukan rute API kita, kita harus membuat middleware JWT. Itu akan melindungi rute kita. Anda dapat menggunakan middleware JWT untuk memverifikasi permintaan dari rute API
php artisan make:middleware JwtMiddleware
Silahkan buka file JwtMiddleware.php dan pastekan code berikut ini
-----------------------------------------------
<?php
namespace App\Http\Middleware;
use Closure;
use JWTAuth;
use Exception;
use Tymon\JWTAuth\Http\Middleware\BaseMiddleware;
class JwtMiddleware extends BaseMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
try {
$user = JWTAuth::parseToken()->authenticate();
} catch (Exception $e) {
if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException){
return response()->json(['status' => 'Token is Invalid']);
}else if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException){
return response()->json(['status' => 'Token is Expired']);
}else{
return response()->json(['status' => 'Authorization Token not found']);
}
}
return $next($request);
}
}
-----------------------------------------------
6. Mendaftarkan Middleware ke Kernel
Untuk menggunakan middleware ini, daftarkan ini ke Kernel. Buka aplikasi\Http\Kernel.php
protected $routeMiddleware = [
...
'jwt.verify' => \App\Http\Middleware\JwtMiddleware::class,
'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken',
'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',
];
Middleware ini akan memverifikasi bahwa pengguna diautentikasi dengan memeriksa token yang dikirim di header permintaan dan Ini akan membuat file middleware baru di direktori Middleware Anda.
Jika pengguna tidak mengautentikasi middleware, lempar pengecualian UnauthorizedHttpException.
7. Create API Route
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ApiController;
use App\Http\Controllers\ProductController;
Route::post('login', [ApiController::class, 'authenticate']);
Route::post('register', [ApiController::class, 'register']);
Route::group(['middleware' => ['jwt.verify']], function() {
Route::get('logout', [ApiController::class, 'logout']);
});
8. Create Login untuk generate Token JWT
public function authenticate(Request $request)
{
$credentials = $request->only('email', 'password');
//valid credential
$validator = Validator::make($credentials, [
'email' => 'required|email',
'password' => 'required|string|min:6|max:50'
]);
//Send failed response if request is not valid
if ($validator->fails()) {
return response()->json(['error' => $validator->messages()], 200);
}
//Request is validated
//Crean token
try {
if (! $token = JWTAuth::attempt($credentials)) {
return response()->json([
'success' => false,
'message' => 'Login credentials are invalid.',
], 400);
}
} catch (JWTException $e) {
return $credentials;
return response()->json([
'success' => false,
'message' => 'Could not create token.',
], 500);
}
//Token created, return with success response and jwt token
return response()->json([
'success' => true,
'token' => $token,
]);
}
9. Hasil Testing