Membuat REST API dengan autentikasi terlihat rumit, padahal Laravel Sanctum membuatnya sederhana. Sanctum cocok untuk API yang dipakai aplikasi mobile atau front-end SPA (Vue/React). Artikel ini memandu Anda membangun API dengan login berbasis token dari awal.
Langkah 1: Install Sanctum
composer require laravel/sanctum
php artisan migrate
Pada Laravel versi terbaru, Sanctum sudah otomatis siap dipakai untuk token API tanpa konfigurasi tambahan yang rumit.
Langkah 2: Siapkan Model User
Pastikan model User memakai trait HasApiTokens:
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
}
Langkah 3: Buat Endpoint Register & Login
Di routes/api.php, daftarkan route publik untuk register dan login:
Route::post('/register', [AuthController::class, 'register']);
Route::post('/login', [AuthController::class, 'login']);
Lalu buat controllernya. Contoh method login yang menghasilkan token:
public function login(Request $request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required',
]);
$user = User::where('email', $request->email)->first();
if (! $user || ! Hash::check($request->password, $user->password)) {
return response()->json(['message' => 'Kredensial salah'], 401);
}
$token = $user->createToken('auth_token')->plainTextToken;
return response()->json([
'access_token' => $token,
'token_type' => 'Bearer',
]);
}
Langkah 4: Proteksi Endpoint dengan Middleware
Endpoint yang butuh login dibungkus middleware auth:sanctum:
Route::middleware('auth:sanctum')->group(function () {
Route::get('/profile', function (Request $request) {
return $request->user();
});
Route::post('/logout', [AuthController::class, 'logout']);
});
Langkah 5: Mengakses API dengan Token
Client mengirim token di header Authorization setiap request ke endpoint terproteksi:
Authorization: Bearer {access_token}
Accept: application/json
Tanpa header ini, endpoint terproteksi akan mengembalikan status 401 Unauthorized.
Langkah 6: Logout (Hapus Token)
public function logout(Request $request)
{
$request->user()->currentAccessToken()->delete();
return response()->json(['message' => 'Berhasil logout']);
}
Tips Penting
- Selalu kirim header
Accept: application/jsonagar Laravel mengembalikan error dalam format JSON, bukan halaman HTML. - Gunakan HTTPS di production agar token tidak bocor.
- Untuk SPA di domain yang sama, Sanctum juga mendukung autentikasi berbasis cookie.
Kesimpulan
Dengan Laravel Sanctum, membuat REST API ber-autentikasi token cukup lima langkah: install, tambahkan trait, buat endpoint auth, proteksi route dengan auth:sanctum, dan kirim token via header Bearer. Dari sini Anda bisa mengembangkan API untuk aplikasi mobile atau front-end modern. Jangan lupa amankan dengan HTTPS saat deploy.