Study
Next.js

Middleware di Next.js

Penjelasan

middleware.js (WAJIB di root project, sejajar dengan folder app/) dijalankan SEBELUM request mencapai route mana pun yang cocok dengan matcher-nya — dipakai untuk hal seperti cek autentikasi, redirect berdasarkan kondisi, atau modifikasi header, mirip middleware di Express.js/Laravel tapi berjalan di edge runtime Next.js.

Contoh Konsep

// middleware.js (di root project)
import { NextResponse } from 'next/server';

export function middleware(request) {
    const sudahLogin = request.cookies.has('session_token');

    if (!sudahLogin && request.nextUrl.pathname.startsWith('/dashboard')) {
        return NextResponse.redirect(new URL('/login', request.url));
    }

    return NextResponse.next(); // lanjut ke route tujuan
}

export const config = {
    matcher: '/dashboard/:path*', // cuma jalan untuk route ini
};

Praktikum

Buat middleware.js yang mengecek cookie 'session_token'. Kalau tidak ada dan path-nya diawali '/admin', redirect ke '/login'. Tulis juga config matcher supaya middleware ini cuma berjalan untuk path '/admin/:path*'.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

TANPA config.matcher, middleware akan berjalan untuk SEMUA request di seluruh aplikasi (termasuk file statis, gambar, dst), yang biasanya tidak diinginkan dan memperlambat — selalu batasi cakupannya lewat matcher supaya cuma jalan di path yang benar-benar butuh.