API dengan Laravel Sanctum atau Passport

API dengan Sanctum atau Passport Laravel - ulin00

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:

Baca Juga: loading
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! 🚀

Muhammad Ulin Nuha
Muhammad Ulin Nuha PEEKCODE CHANNEL YOUTUBE Developer Android | Networking | Konten Creator peekcode YT | Galery | Pecinta Sholawat |

Posting Komentar