Laravel — Sanctum Authentication

Lucky Tri Bhakti
Chevalier Lab
Published in
6 min readAug 10, 2021

Halo, diartikel ini saya akan sharing sesuatu terkait laravel. Sesuai judulnya kali ini saya akan share tentang fitur authentication di laravel yaitu laravel/sanctum. Walaupun fitur ini udah lama keluar tapi gapapa lah ya namanya juga sharing 😁

Apa itu Laravel Sanctum ?

Simplenya ini adalah package atau library yang dibuat oleh laravel untuk mempermudah kita dalam membangun sistem authentication berbasis api token untuk aplikasi web berbasis SPA dan atau aplikasi berbasis mobile.

Jadi dalam proses pembuatan sistem authentication pastinya akan sangat mudah dan aman dikarenakan ini merupakan library dari laravelnya langsung.

Prerequisite

Sebelum memulai, teman-teman diharapkan sudah mempunyai tools di bawah ini.

  1. Code Editor (Sublime Text, Vs Code)
  2. API Client (Postman, Insomnia)
  3. Dan Composer sebagai depedency manager

Di artikel ini saya mengasumsikan bahwa kalian sudah menginstall php, database mysql/mariadb, serta web server (apache atau nginx). Serta saya juga mengasumsikan bahwa kalian mengerti apa itu API, cara pengunaan database serta basic-basic dari PHP dan Laravel

Di artikel ini, saya menggunakan VS Code sebagai code editornya dan Postman sebagai API Clientnya. Oke jika tools diatas sudah kita install, kita lanjutkan ke proses berikutnya.

1. Setup Project

Pertama-tama kita akan setup project laravel kita. Teman-teman bisa buka terminal atau command prompt dan arahkan ke direktori tempat teman-teman akan menyimpan projectnya.

Lalu teman-teman ketik:

composer create-project laravel/laravel sanctum-example

Perintah diatas akan membuatkan kita project laravel dengan nama “sanctum-example”. Setelah installasi beres, kita coba jalankan dahulu project laravelnya. Teman-teman bisa mengakses terlebih dahulu project nya dengan perintah:

cd sanctum-example lalu ketik php artisan serve untuk menjalankan laravelnya. Lalu lihat di terminal/command prompt teman-teman, akan ada link untuk membuka project kita. Copy link tersebut pada browser teman-teman maka hasilnya akan seperti ini.

Project Laravel berhasil dibuat

Jika berhasil, maka tampilannya akan seperti gambar diatas. Tapi kali ini kita akan membuat API jadi kita tidak memerlukan browser.

2. Setup Database

Lalu setelah itu, kita akan setup databasenya. Pertama kita buat database. Teman-teman buka phpmyadmin lalu buat database dengan nama sanctum_example

Pembuatan database

Setelah itu, kita setting project laravel kita supaya terhubung ke database yang telah kita buat. Teman-teman bisa membuka code editor kesayangan teman-teman, lalu buka file.env

Jika teman-teman tidak ada file .env teman-teman bisa copy isi file dari file .env.example lalu buat file .env

Bisa dilihat dari gambar diatas. Kita akan ubah settingan databasenya menjadi seperti ini

DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=sanctum_exampleDB_USERNAME=rootDB_PASSWORD=

Untuk username dan password bisa disesuaikan dengan settingan database teman-teman.

3. Setup Laravel-Sanctum

Lalu selanjutnya kita akan setup untuk laravel sanctumnya.

Pertama, kita install terlebih dahulu package laravel/sanctum nya. Pada terminal / command prompt ketikan

composer require laravel/sanctum

Setelah itu, masih pada terminal / command prompt ketikan

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

Perintah diatas berguna untuk mempublish atau membuat configurasi laravel/sanctum. Setelah selesai, bukan file app\Http\Kernel.php lalu pada line 42 ubah settingannya menjadi seperti berikut

'api' => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],

Nah, proses setup dan install laravel/sanctum telah selesai. Secara otomatis, laravel akan membuatkan table default untuk keperluan autentikasi. Teman-teman bisa melihatnya pada folder database\migration . Kita tidak akan menambah file migration lagi karena secara default sudah cukup untuk pembuatan authentication. Untuk itu kita hanya tinggal mengetikan

php artisan migrate

Perintah tersebut berguna untuk memanggil semua file migration.Maka pada database kita sudah ada tabel-tabel seperti gambar berikut

Jika kita lihat tabel user , maka teman-teman akan melihat kolom username dan password . Nah kita akan gunakan kedua kolom ini sebagai sistem login kita.

4. Membuat Seeder

Sebelum kita lanjut, kita harus membuat seeder telebih dahulu. Gunanya seeder ini adalah sebagai base data kita di database. Teman-teman pada terminal atau command prompt ketikan:

php artisan make:seeder UserSeeder

Perintah diatas akan membuatkan file UserSeeder.php pada folder database\seeders

Lalu edit file UserSeeder.php menjadi seperti ini

Disini, kita menggunakan queryBuilder dari laravel untuk memasukan data ke database. Maka dari itu, kita mengimport class Illuminate\Support\Facades\DB . Lalu kita menggunakan helpers dari laravel yaitu bcrypt untuk hashing password.

Setelah membuat UserSeeder kita edit file DatabaseSeeder.php pada folder database\seeders . Ubah DatabaseSeeder.php menjadi seperti ini

File seeder ini adalah file untuk memanggil semua class seeder. Maka dari itu di dalam fungsi run kita panggil class UserSeeder kita.

Setelah itu jalankan perintah:

php artisan db:seed

Perintah diatas berguna untuk memanggil seeder. Maka secara otomatis tabel User di database telah terisi data

5. Membuat API Authentication

Nah akhirnya kita berada pada tahap terakhir yaitu pembuatan API nya nih. Langsung saja kita lanjutkan

Buka file User.php pada folder App\Models Lalu edit menjadi seperti ini

Setelah itu kita akan membuat controller untuk membuat proses authentication nya. Jalankan perintah berikut pada terminal atau command prompt

php artisan make:controller AuthController

Maka secara otomatis file AuthController.php telah dibuat pada folder App\Http\Controllers . Lalu edit AuthController.php menjadi seperti ini.

Lalu kita buat routing nya. Buka file api.php pada folder routes . Lalu edit menjadi seperti ini

Bisa kita lihat, kita menambahkan middleware auth:sanctum pada route /logout dan /user artinya, endpoint ini di proteksi oleh laravel sanctum bahwa jika kita ingin mengakses endpoint tersebut, kita harus login terlebih dahulu.

Oke, pembuatan API akhirnya telah selesai🎉. Saatnya kita tes API kita, sekarang teman-teman buka postman lalu buat request baru dengan method POST. Kita tes fungsi login kita

Pertama kita coba menggunakan password yang salah

Bisa kita lihat, kita mendapat response bahwa akun kita tidak ditemukan. Lalu kita tes jika kita menggunakan password yang benar

Ketika kita klik tombol SEND, maka kita akan mendapat response bahwa kita berhasil login dan kita mendapat token sebagai kunci untuk request ke endpoint lainnya.

Oke untuk mencobanya, mari kita tes ke endpoint /user

Bisa kita lihat, jika kita mengakses /user tanpa disertai token, maka kita akan mendapatkan pesan Unauthenticated artinya kita dianggap belum melakukan login. Untuk itu kita perlu menyertakan token yang telah kita dapat sebelumnya.

Jika kita menyertakan token kita pada headers, maka kita bisa melihat hasil response data kita seperti nama dan email.

Oke kita lakukan tes terakhir yaitu logout. Untuk logout sama seperti endpoint /user kita harus menyertakan token kita

Oke, semua endpoint telah kita coba dan tidak ada error.

Oke sampe disini dulu artikel ini. Semoga kalian tidak kesulitan dalam mempraktekannya. Dan yang lebih penting lagi, semoga artikel ini bermanfaat untuk kita semua dan memberikan ilmu baru untuk kita.

Dah sampai ketemu di artikel berikutnya 👋👋👋

Referensi

--

--

Lucky Tri Bhakti
Chevalier Lab

Seorang mahasiswa Informatika yang senang akan belajar hal-hal baru terkait programming dan juga terkadang membenci programming 😂