#laravel #sanctum #jwt #cookie
Created on March 12, 2024
API JWT dengan Cookie di Laravel 10 adalah sebuah cara untuk membuat API yang menggunakan JSON Web Token (JWT) untuk autentikasi dan menggunakan Cookie untuk menyimpan token. JWT adalah sebuah standar terbuka yang mendefinisikan cara untuk mentransmisikan informasi yang aman antara dua pihak. JWT biasanya digunakan untuk autentikasi dan pertukaran informasi antara aplikasi klien dan server. Dengan menggunakan JWT, kita bisa membuat API yang aman dan efisien.
Laravel 10 adalah sebuah framework PHP yang populer untuk membuat aplikasi web. Laravel 10 memiliki banyak fitur yang memudahkan kita untuk membuat API yang aman dan efisien. Dengan menggunakan Laravel 10, kita bisa membuat API JWT dengan Cookie dengan mudah dan cepat.
API JWT dengan Cookie di Laravel 10 memiliki beberapa keuntungan, antara lain:
Berikut adalah langkah-langkah untuk membuat API JWT dengan Cookie di Laravel 10:
Pertama, kita perlu menginstall Laravel 10. Kita bisa menginstall Laravel 10 dengan menggunakan composer. Berikut adalah perintah untuk menginstall Laravel 10:
composer create-project laravel/laravel myapp
Setelah kita menginstall Laravel 10, kita perlu menginstall package Sanctum. Package Sanctum adalah package yang digunakan untuk membuat API JWT dengan Cookie di Laravel 10. Berikut adalah perintah untuk menginstall package Sanctum:
composer require laravel/sanctum
kemudian, kamu perlu publish konfigurasi Sanctum dengan menggunakan perintah vendor:publish
. konfigurasi ini akan disimpan di config/sanctum.php
.
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
Setelah itu, kamu perlu menjalankan migrasi untuk membuat tabel-tabel yang diperlukan oleh Sanctum.
php artisan migrate
Pada model User
, kamu perlu menambahkan trait HasApiTokens
untuk menggunakan Sanctum.
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
// Code
}
Setelah kita menginstall package Sanctum, kita perlu membuat controller untuk autentikasi
Jalankan perintah berikut untuk membuat controller API/AuthController
:
php artisan make:controller API/AuthController
Kaitkan controller dengan model User
dan import beberapa class yang diperlukan.
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Support\Facades\Hash;
use Symfony\Component\HttpFoundation\Response;
Fungsi register
untuk mendaftarkan user baru sekaligus memberi token ke user tersebut.
public function register(Request $request)
{
$user = User::create([
'username' => $request->username,
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
$token = $user->createToken('token')->plainTextToken;
$cookie = cookie('jwt', $token, 60 * 48); // 2 day
return response([
'status' => 'success',
'message' => $token
])->withCookie($cookie);
}
Fungsi login
untuk login user dan memberi token ke user
public function login(Request $request)
{
if (!Auth::attempt($request->only('username', 'password'))) {
return response([
'status' => 'error',
'message' => 'Invalid credentials'
], 401);
}
$user = Auth::user();
$token = $user->createToken('token')->plainTextToken;
$cookie = cookie('jwt', $token, 60 * 48); // 2 day
return response([
'status' => 'success',
'message' => $token
])->withCookie($cookie);
}
Fungsi logout
untuk logout user dan menghapus token dari user
public function logout()
{
$cookie = Cookie::forget('jwt');
return response([
'status' => 'success',
'message' => 'Token deleted'
])->withCookie($cookie);
}
Apa itu routing? Routing adalah cara untuk menentukan URL mana yang akan diarahkan ke controller mana.
Pada file routes/api.php
, tambahkan routing untuk autentikasi API.
// Route untuk register user
Route::post('/register', [App\Http\Controllers\API\AuthController::class, 'register']);
// Route untuk login user
Route::post('/login', [App\Http\Controllers\API\AuthController::class, 'login']);
Route::middleware('auth:sanctum')->group(function () {
// Route untuk mendapatkan user yang sedang login
Route::get('/user', [App\Http\Controllers\API\AuthController::class, 'user']);
// Route untuk logout user
Route::post('/logout', [App\Http\Controllers\API\AuthController::class, 'logout']);
});
Setelah kita membuat API JWT dengan Cookie di Laravel 10, kita bisa mencoba API tersebut dengan menggunakan Postman. Postman adalah sebuah aplikasi yang digunakan untuk menguji API. Berikut adalah langkah-langkah untuk mencoba API JWT dengan Cookie di Laravel 10 dengan menggunakan Postman:
Pertama, kita perlu mendaftarkan user baru. Kita bisa mendaftarkan user baru dengan menggunakan endpoint /register
. Berikut adalah langkah-langkahnya:
Buka Postman
Pilih method POST
Masukkan URL http://tg-connect-rest.test/api/register
Masukkan body dengan format x-www-form-urlencoded
dan isi dengan data user yang ingin didaftarkan (username, name, email, password) dengan format JSON
Contoh:
{
"username": "haidar",
"name": "Haidar",
"email": "haidar@email.com",
"password": "password"
}
Klik Send
Jika berhasil, maka kita akan mendapatkan token yang disimpan di cookie. Berikut adalah contoh responsenya:
{
"status": "success",
"message": "1|IJwniShhh8r7jCMT0jqatS2ZDXdXnJKMXZxaC2F887afd0f1"
}
Setelah kita mendaftarkan user baru, kita bisa mencoba route untuk mendapatkan user yang sedang login. Kita bisa mencoba route tersebut dengan menggunakan endpoint /user
. Berikut adalah langkah-langkahnya:
Buka Postman
Pilih method GET
Masukkan URL http://tg-connect-rest.test/api/user
Klik Send
Jika berhasil, maka kita akan mendapatkan data user yang sedang login, berikut adalah contoh responsenya:
{
"id": 1,
"username": "haidar",
"name": "Haidar",
"email": "haidar@email.com",
"email_verified_at": null,
"created_at": "2024-03-10T17:05:57.000000Z",
"updated_at": "2024-03-10T17:05:57.000000Z"
}
API JWT dengan Cookie di Laravel 10 adalah sebuah cara untuk membuat API yang menggunakan JSON Web Token (JWT) untuk autentikasi dan menggunakan Cookie untuk menyimpan token. Dengan menggunakan Laravel 10 dan package Sanctum, kita bisa membuat API JWT dengan Cookie dengan mudah dan cepat. API JWT dengan Cookie di Laravel 10 memiliki beberapa keuntungan, antara lain keamanan, efisiensi, mudah digunakan, dan mudah diintegrasikan dengan aplikasi web dan mobile. Dengan menggunakan Postman, kita bisa mencoba API JWT dengan Cookie di Laravel 10 dengan mudah dan cepat.
Terima kasih telah membaca artikel ini, semoga bermanfaat👍👍
No related posts available.