Membuat Autentikasi API Sederhana di Laravel6 min read

Sebagai seorang Backend Programmer, salah satu skill yang harus kita kuasai adalah pembuatan REST API atau kita singkat jadi API (Application Programming Interface) saja. Disini saya tidak akan menjelaskan apa itu API dan bagaimana cara membuat API, karena pembahasan tentang itu sudah banyak sekali bertebaran di mbah Google.

Hal penting yang harus dipunyai oleh sebuah Web Service/API adalah proses Autentikasi, fungsinya agar tidak sembarang orang bisa mengakses API kita. Terkecuali jika memang API-nya sengaja kita buat untuk dinikmati oleh siapa saja tanpa harus ada proses Autentikasi.

Di Laravel, sebetulnya ada banyak cara untuk membuat Autentikasi API. Yang paling populer dan lengkap adalah menggunakan Laravel Passport (bisa baca disini), akan tetapi saya pikir Laravel Passport ini lebih cocok digunakan untuk membangun sebuah Web Service yang cukup besar dan kompleks. Untuk hanya sekedar mengamankan endpoint, kita bisa memanfaatkan fitur API Token yang sudah ada didalam Laravel atau istilah kerennya adalah Out of The Box. Oke langsung saja kita bahas bagaimana caranya.

Persiapan dan Konfigurasi Sebelum Tempur

Pastikan kita sudah menyiapkan Project Laravel-nya. Selanjutnya kita buat database dengan nama apa saja.

Setelah membuat database selanjutnya kita konfigurasi database kita di file .env seperti dibawah.

Silahkan sesuaikan dengan konfigurasi localhost dan database temen-temen.

Selanjutnya kita jalankan Migration sekaligus untuk memastikan konfigurasi database sudah dilakukan dengan benar. Bukan Terminal/Command Prompt, kemudian masuk ke direktori Project kita lalu jalankan php artisan migrate

Jika sebelumnya Anda sudah menjalankan perintah diatas, silahkan lewati saja langkah diatas. Kedua migration diatas akan membuat tabel users dan password_resets di database yang akan kita gunakan untuk proses autentikasi pada aplikasi yang akan kita bangun.

Membuat Sistem Autentikasi

Setelah membuat tabel di database, selanjutnya kita buat sistem Autentikasinya. Caranya sangat mudah sekali dan sudah disediakan dalam Laravel itu sendiri, cukup jalankan php artisan make:auth

Sekarang coba buka Project Laravel kita di browser, maka akan ada halaman baru yaitu Login, Register, dan Reset Password.

Sampai disini kita sudah selesai membuat fitur Autentikasi di Laravel. Eits, tapi artikelnya masih panjang soalnya judulnya juga kan membuat Autentikasi untuk API hehe.

Membuat Autentikasi Token untuk API

Mari kita lanjut dengan menambahkan field api_token di tabel users lewat Migrations. Silahkan jalankan php artisan make:migration add_api_token_on_users_table

Silahkan buka file migration yang kita buat tadi dan edit menjadi seperti dibawah kemudian jalankan kembali php artisan migrate untuk menerapkan perubahan tadi ke database.

Selanjutnya kita atur agar setiap ada user yang register, maka dia akan langsung memiliki sebuah API Token yang terdiri dari karakter acak. Buka file app/Http/Controllers/Auth/RegisterController.php ubah method create() menjadi seperti ini:

Nah sekarang ketika ada user yang register maka ia akan langsung memiliki sebuah token yang bisa dia gunakan untuk Autentikasi API. Sekarang biar user bisa liat Token dia, kita buka dan edit file di resources/views/home.blade.php seperti ini:

Maka ketika ada user register/login akan tampil:

Selanjutnya hanya untuk memastikan saja, silahkan cek file config/auth.php dan pastikan driver untuk api diisi token seperti dibawah.

Tahap Pengetesan

Untuk pengetesan, pada tutorial ini saya menggunakan aplikasi yang sering digunakan yaitu Postman.

Di Laravel 5.5 sudah disediakan 1 endpoint untuk mengecek informasi user, jika tidak atau belum ada silahkan copas saja code dibawah ke routes/api.php.

Untuk melakukan Autentikasi API, silahkan kirim Header Authorization: Bearer api_token_kita. Langsung saya coba dan jeng jeng jeng Autentikasi berhasil.

Jika proses Autentikasi gagal, maka akan menampilkan hasil seperti dibawah.

Sampai disini sudah jelas cukup kan? Jika belum, silahkan berdiskusi di kolom komentar dibawah.

Terima kasih atas kunjungannya.
Wassalamu’alaikum Warahmatullahi Wabarakatuh