Table of Contents
- Table of Contents
- Apa sih API JWT dengan Cookie di Laravel 10?
- Cara Membuat API JWT dengan Cookie di Laravel 10
- Routing untuk otentikasi API
- Test Dengan Postman
- Kesimpulan
Apa sih API JWT dengan Cookie di Laravel 10?
API JWT dengan Cookie di Laravel 10 adalah sebuah cara untuk membuat API yang menggunakan JSON Web Token (JWT) untuk autentikasi dan menggunakan Cookie untuk menyimpan token. JWT adalah sebuah standar terbuka yang mendefinisikan cara untuk mentransmisikan informasi yang aman antara dua pihak. JWT biasanya digunakan untuk autentikasi dan pertukaran informasi antara aplikasi klien dan server. Dengan menggunakan JWT, kita bisa membuat API yang aman dan efisien.
Laravel 10 adalah sebuah framework PHP yang populer untuk membuat aplikasi web. Laravel 10 memiliki banyak fitur yang memudahkan kita untuk membuat API yang aman dan efisien. Dengan menggunakan Laravel 10, kita bisa membuat API JWT dengan Cookie dengan mudah dan cepat.
API JWT dengan Cookie di Laravel 10 memiliki beberapa keuntungan, antara lain:
- Keamanan
- Efisiensi
- Mudah digunakan
- Mudah diintegrasikan dengan aplikasi web dan mobile
Cara Membuat API JWT dengan Cookie di Laravel 10
Berikut adalah langkah-langkah untuk membuat API JWT dengan Cookie di Laravel 10:
Install Laravel 10
Pertama, kita perlu menginstall Laravel 10. Kita bisa menginstall Laravel 10 dengan menggunakan composer. Berikut adalah perintah untuk menginstall Laravel 10:
composer create-project laravel/laravel myapp
Install Package Sanctum
Setelah kita menginstall Laravel 10, kita perlu menginstall package Sanctum. Package Sanctum adalah package yang digunakan untuk membuat API JWT dengan Cookie di Laravel 10. Berikut adalah perintah untuk menginstall package Sanctum:
composer require laravel/sanctum
kemudian, kamu perlu publish konfigurasi Sanctum dengan menggunakan perintah vendor:publish
. konfigurasi ini akan disimpan di config/sanctum.php
.
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
Setelah itu, kamu perlu menjalankan migrasi untuk membuat tabel-tabel yang diperlukan oleh Sanctum.
php artisan migrate
Pada model User
, kamu perlu menambahkan trait HasApiTokens
untuk menggunakan Sanctum.
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
// Code
}
Membuat controller untuk autentikasi
Setelah kita menginstall package Sanctum, kita perlu membuat controller untuk autentikasi
Jalankan perintah berikut untuk membuat controller API/AuthController
:
php artisan make:controller API/AuthController
Kaitkan controller dengan model User
dan import beberapa class yang diperlukan.
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Support\Facades\Hash;
use Symfony\Component\HttpFoundation\Response;
Fungsi register
untuk mendaftarkan user baru sekaligus memberi token ke user tersebut.
public function register(Request $request)
{
$user = User::create([
'username' => $request->username,
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
$token = $user->createToken('token')->plainTextToken;
$cookie = cookie('jwt', $token, 60 * 48); // 2 day
return response([
'status' => 'success',
'message' => $token
])->withCookie($cookie);
}
Fungsi login
untuk login user dan memberi token ke user
public function login(Request $request)
{
if (!Auth::attempt($request->only('username', 'password'))) {
return response([
'status' => 'error',
'message' => 'Invalid credentials'
], 401);
}
$user = Auth::user();
$token = $user->createToken('token')->plainTextToken;
$cookie = cookie('jwt', $token, 60 * 48); // 2 day
return response([
'status' => 'success',
'message' => $token
])->withCookie($cookie);
}
Fungsi logout
untuk logout user dan menghapus token dari user
public function logout()
{
$cookie = Cookie::forget('jwt');
return response([
'status' => 'success',
'message' => 'Token deleted'
])->withCookie($cookie);
}
Routing untuk otentikasi API
Apa itu routing? Routing adalah cara untuk menentukan URL mana yang akan diarahkan ke controller mana.
Pada file routes/api.php
, tambahkan routing untuk autentikasi API.
// Route untuk register user
Route::post('/register', [App\Http\Controllers\API\AuthController::class, 'register']);
// Route untuk login user
Route::post('/login', [App\Http\Controllers\API\AuthController::class, 'login']);
Route::middleware('auth:sanctum')->group(function () {
// Route untuk mendapatkan user yang sedang login
Route::get('/user', [App\Http\Controllers\API\AuthController::class, 'user']);
// Route untuk logout user
Route::post('/logout', [App\Http\Controllers\API\AuthController::class, 'logout']);
});
Test Dengan Postman
Setelah kita membuat API JWT dengan Cookie di Laravel 10, kita bisa mencoba API tersebut dengan menggunakan Postman. Postman adalah sebuah aplikasi yang digunakan untuk menguji API. Berikut adalah langkah-langkah untuk mencoba API JWT dengan Cookie di Laravel 10 dengan menggunakan Postman:
Register User
Pertama, kita perlu mendaftarkan user baru. Kita bisa mendaftarkan user baru dengan menggunakan endpoint /register
. Berikut adalah langkah-langkahnya:
-
Buka Postman
-
Pilih method
POST
-
Masukkan URL
http://tg-connect-rest.test/api/register
-
Masukkan body dengan format
x-www-form-urlencoded
dan isi dengan data user yang ingin didaftarkan (username, name, email, password) dengan format JSON Contoh:{ "username": "haidar", "name": "Haidar", "email": "haidar@email.com", "password": "password" }
-
Klik
Send
Jika berhasil, maka kita akan mendapatkan token yang disimpan di cookie. Berikut adalah contoh responsenya:
{ "status": "success", "message": "1|IJwniShhh8r7jCMT0jqatS2ZDXdXnJKMXZxaC2F887afd0f1" }
Route untuk mendapatkan user yang sedang login
Setelah kita mendaftarkan user baru, kita bisa mencoba route untuk mendapatkan user yang sedang login. Kita bisa mencoba route tersebut dengan menggunakan endpoint /user
. Berikut adalah langkah-langkahnya:
-
Buka Postman
-
Pilih method
GET
-
Masukkan URL
http://tg-connect-rest.test/api/user
-
Klik
Send
Jika berhasil, maka kita akan mendapatkan data user yang sedang login, berikut adalah contoh responsenya:
{ "id": 1, "username": "haidar", "name": "Haidar", "email": "haidar@email.com", "email_verified_at": null, "created_at": "2024-03-10T17:05:57.000000Z", "updated_at": "2024-03-10T17:05:57.000000Z" }
Kesimpulan
API JWT dengan Cookie di Laravel 10 adalah sebuah cara untuk membuat API yang menggunakan JSON Web Token (JWT) untuk autentikasi dan menggunakan Cookie untuk menyimpan token. Dengan menggunakan Laravel 10 dan package Sanctum, kita bisa membuat API JWT dengan Cookie dengan mudah dan cepat. API JWT dengan Cookie di Laravel 10 memiliki beberapa keuntungan, antara lain keamanan, efisiensi, mudah digunakan, dan mudah diintegrasikan dengan aplikasi web dan mobile. Dengan menggunakan Postman, kita bisa mencoba API JWT dengan Cookie di Laravel 10 dengan mudah dan cepat.
Terima kasih telah membaca artikel ini, semoga bermanfaat👍👍