bagaimana cara memvalidasi jwt token di laravel, token di buat di node js

adakah cara untuk memvalidasi token yang di buat sebuah service node js.
token ini akan di validasi di laravel untuk authentication.

payload jwt dari node js kurang lebih seperti ini:

{
  "name": "bagus",
  "email": "[email protected]",
  "phone": "08....",
  "id": 1,
  "iat": 1679156780,
  "exp": 1679185580
}

di laravel sudah terinstal tymon/jwt-auth
yang saya tau, payload yang di keluarkanย 
{
  "iss": "https://mydomain.com/api/auth/login",
  "iat": 1679157027,
  "nbf": 1679157027,
  "jti": "lJezfzjVpdjLFHJU",
  "sub": 4,
  "prv": "87e0af1ef9fd15812fdec97153a14e0b047546bb"
}



avatar waziat

@waziat

23 Kontribusi 5 Poin


Jawaban

saya pribadi belum pernah bikin jwt system di service yang berbeda.
Apakah kamu sudah mencoba? jika sudah.. masalahnya apa?ย  pastikan menggunakan SECRET ENV yang sama untuk tokennya
avatar hilmanski

@hilmanski

2552 Kontribusi 2091 Poin


Anda harus Ikuti langkah-langkah ini untuk memvalidasi token JWT di Laravel menggunakan paket tymon/jwt-auth:


Instal paket:
composer require tymon/jwt-auth


Hasilkan rahasia JWT:
php artisan jwt:secret



Buat middleware untuk menangani validasi token:
php artisan make:middleware JwtMiddleware

Ini akan membuat file bernama JwtMiddleware.php di direktori app/Http/Middleware Anda.
Mekanisme validasi token harus ditambahkan ke middleware:
use Tymon\JWTAuth\Facades\JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;

public function handle($request, Closure $next)
{
    try {
        $token = JWTAuth::parseToken();
        $payload = $token->getPayload();
    } catch (JWTException $e) {
        return response()->json(['error' => 'Token is invalid'], 401);
    }

    if (!$payload) {
        return response()->json(['error' => 'Token is invalid'], 401);
    }

    $request->attributes->add(['jwt_payload' => $payload]);

    return $next($request);
}


Token akan diuraikan oleh middleware ini, dan payload akan diekstraksi dan ditambahkan ke atribut permintaan.

Tambahkan middleware ke rute yang diperlukan autentikasi:
Route::middleware('jwt')->get('/protected', function () {
    return response()->json(['message' => 'Access granted']);
});


Sebelum memberikan akses, rute contoh ini akan membutuhkan penerapan JwtMiddleware.

Mengenai paruh kedua pertanyaan Anda, jika Anda ingin memvalidasi token yang dihasilkan dalam layanan Node.js, Anda dapat mengurai token di Laravel menggunakan fungsi JWTAuth::parseToken() yang sama. Namun, Anda perlu memastikan bahwa rahasia yang sama digunakan untuk menandatangani token di kedua layanan, dan muatannya kompatibel dengan logika autentikasi di Laravel.
avatar smithy

@smithy

4 Kontribusi 1 Poin


Login untuk gabung berdiskusi