Sugeng rawuh

JWT Token pada Laravel 8

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 codepolitan
Instal 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

  php artisan jwt:secret
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










Share:

0 comments:

Post a Comment

Tonton video



Yuk, SUBSCRIBE

omfiki.blogspot.com