Cara menggunakan Personal Access Token Pada Laravel Passport

Pada artikel sebelumnya saya sempat membahas cara ambil token dari user credential email dan password dengan tipe grant password dan lalu melakukan proses pengambilan resources dari token yang didapat tersebut. Sekarang saya coba ingin menulis cara menggunakan Personal Access Token pada Laravel Passport. Dengan konsep yang mirip sama dengan grant password, Personal Access Token ini memiliki kelebihan dalam kemudahan mengakses token, namun ada beberapa kelemahan pula yang harus dihandel oleh programmer.

Pada Personal Access Token, untuk mendapatkan token sangat mudah dengan mengambil data user yang aktif lalu buat token sesuai dengan nama Personal Access Token yang dibuat terlebih dahulu.

Awalnya adalah kita buat dulu Personal Access Token dengan perintah seperti pada dokumentasi Laravel.

php artisan passport:client --personal

Jika perintah ini dilakukan, kita disuruh untuk menuliskan nama identik dari Personal Access Token. Jika berhasil, anda simpan nama tersebut untuk proses pembuatan token.

Nah, Personal Access Token dalam kasus ini saya implement ketika berhasil login, jadi ketika berhasil login ambil data user lalu buat saja tokennya seperti pada gambar dibawah ini.

Laravel Personal Access Token

Terlihat pada gambar diatas, saya ambil data user dengan variable $data, lalu saya create token dengan perintah

$token = $data->createToken('namatokenidentik')->accessToken;

Nah token ini bisa langsung digunakan untuk mengambil data resources api tertentu. Untuk melihatnya, silahkan liat artikel sebelumnya ya.

Masalah yang terjadi jika pakai Personal Access Token ini adalah token bersifat long-lived artinya tidak ada expired sama sekali. Ini sebenernya memiliki arti yang baik atau buruk tergantung kebutuhan aplikasi. Untuk aplikasi yang berkaitan dengan data privasi, token harus dan wajib sering diubah. Ibarat password, kadang anda diminta untuk mengubah password secara berkala?


[crp]


Untuk itu, masalah Personal Access Token harus dihandel dengan cara mungkin melakukan pengecekan token yang sudah lama di create. Cara melihat token yang ada adalah dengan mengecek table oauth_access_token pada aplikasi Laravel kita.

Masalah lain yang saya lihat adalah ketika user akses login satu user dengan lebih dari satu device atau satu mesin, Personal Access Token ini tetep membuat token, sampai akhirnya token duplicate padahal hanya satu user.

Cara menghandelnya adalah ketika user melakukan logout, panggil saja fungsi untuk menghapus token tersebut dengan perintah.

$token = $request->user()->token()->revoke();

Perintah ini akan menghapus token yang sedang aktif. Sehingga tidak mengalami duplicate token di database kita.

Sempai disini, moga ada manfaatnya ya 🙂

6 thoughts on “Cara menggunakan Personal Access Token Pada Laravel Passport”

  1. semisal user login di device lain tanpa logout di device sebelumnya dan token di device seblumnya itu otomatis expired itu gimana ya caranya?

    1. emm..saat ini belum pernah set seperti itu mas. Device lain masih bisa pakai selama token itu belum expired. Namun secara logika bisa saja kita buat alur seperti jika user dengan ID 1 login, hapus semua token yang User dengan ID 1 punya lalu buatkan token baru.

  2. Fungsi “name” yang mas isi diatas dengan “namatokenidentik” ini buat apa ya? dan gimana caranya kita set client_id untuk token yang akan kita generate misal kita ada banyak clients?

    1. kalau banyak client tidak pakai personal access token mas yang saya tahu, karena setiap client_id punya identik masing2. Mas perlu Client Credentials Grant Tokens mungkin karna tiap client punya credential masing2.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.