API dengan Laravel Sanctum atau Passport

Apa Itu API di Laravel?
API (Application Programming Interface) di Laravel memungkinkan aplikasi untuk berkomunikasi dengan layanan lain melalui HTTP. Laravel menyediakan alat bawaan yang memudahkan pembuatan API yang aman dan efisien.
Mengapa Memilih Sanctum atau Passport?
Sanctum dan Passport adalah dua metode otentikasi API di Laravel yang membantu mengamankan endpoint API. Sanctum cocok untuk aplikasi SPA (Single Page Application) dan mobile apps, sementara Passport lebih ideal untuk OAuth2.
Perbedaan Laravel Sanctum dan Passport
Laravel Sanctum | Laravel Passport |
---|---|
Lebih ringan | Mendukung OAuth2 |
Cocok untuk SPA | Cocok untuk aplikasi besar |
Menggunakan token berbasis cookie | Menggunakan token OAuth |
Persiapan Instalasi
Persyaratan Sistem
Pastikan Laravel sudah terpasang dengan versi terbaru dan menggunakan database yang kompatibel.
Instalasi Laravel
Jalankan perintah berikut untuk menginstal Laravel:
composer create-project laravel/laravel api_project
Konfigurasi Database
Sesuaikan pengaturan .env
untuk database:
DB_DATABASE=api_project
DB_USERNAME=root
DB_PASSWORD=
Menggunakan Laravel Sanctum
Instalasi dan Konfigurasi Sanctum
composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
Tambahkan middleware di Kernel.php
:
use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;
'api' => [
EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
Membuat API Authentication dengan Sanctum
Tambahkan HasApiTokens
ke model User:
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable {
use HasApiTokens, Notifiable;
}
Mengelola Token Otentikasi
Buat login API:
public function login(Request $request) {
$user = User::where('email', $request->email)->first();
if (!$user || !Hash::check($request->password, $user->password)) {
return response(['message' => 'Unauthorized'], 401);
}
return response(['token' => $user->createToken('auth_token')->plainTextToken]);
}
Menggunakan Laravel Passport
Instalasi dan Konfigurasi Passport
composer require laravel/passport
php artisan migrate
php artisan passport:install
Tambahkan HasApiTokens
ke model User:
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable {
use HasApiTokens, Notifiable;
}
Membuat OAuth2 Authentication
Tambahkan middleware ke config/auth.php
:
'guards' => [
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
Menggunakan Personal Access Token
Membuat token:
$token = $user->createToken('MyApp')->accessToken;
Implementasi API di Laravel
Membuat Controller API
Buat controller:
php artisan make:controller Api/AuthController
Menyusun Route API
Tambahkan route di routes/api.php
:
Route::post('/login', [AuthController::class, 'login']);
Menggunakan Middleware di API
Tambahkan proteksi route:
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Testing API dengan Postman
Gunakan Postman untuk menguji endpoint API dengan metode POST
dan GET
.
Kesimpulan
Laravel Sanctum cocok untuk aplikasi kecil hingga menengah, sementara Passport lebih ideal untuk sistem berbasis OAuth2 yang kompleks. Pilihan tergantung pada kebutuhan proyek.
FAQ
1. Apa perbedaan utama Laravel Sanctum dan Passport?
Sanctum lebih ringan dan berbasis token sederhana, sementara Passport menggunakan OAuth2.
2. Bagaimana cara memilih antara Sanctum dan Passport?
Gunakan Sanctum untuk SPA atau mobile apps, dan Passport untuk sistem yang membutuhkan OAuth2.
3. Apa kelebihan Laravel Sanctum?
Sanctum mudah dikonfigurasi dan lebih ringan dibandingkan Passport.
4. Apa yang harus dilakukan jika token tidak valid?
Pastikan token disertakan dalam header Authorization: Bearer <token>
.
5. Bagaimana cara mengatur middleware di API?
Gunakan middleware auth:sanctum
atau auth:api
pada route yang memerlukan otentikasi.
Itulah panduan lengkap API dengan Laravel Sanctum dan Passport! 🚀
Posting Komentar