Pencarian

Jumat, 05 Juli 2024

Membuat pengecualian pada middleware Nexjs 14

Pada contoh berikut merupakan middleware yang sudah dibuat.

import { NextResponse } from "next/server";

import { getSession } from '@/lib/actions';


export async function middleware(req) {

  const { pathname } = req.nextUrl;

  const session = await getSession(req);


  if (!session.isLoggedIn) {

    const url = req.nextUrl.clone();

    url.pathname = '/admin/login';

    return NextResponse.redirect(url);

  }


  return NextResponse.next();

}


export const config = {

  matcher: '/admin/:path*',

};


Agar project tidak mengalami "Many to redirect" kalian hanya perlu menambahkanya seperti ini.

// Jika rute adalah '/admin/login', biarkan saja

  if (pathname === '/admin/login') {

    return NextResponse.next();

  }

Jika sudah digabungkan maka akan menjadi seperti ini.

import { NextResponse } from "next/server";

import { getSession } from '@/lib/actions';


export async function middleware(req) {

  const { pathname } = req.nextUrl;


  // Jika rute adalah '/admin/login', biarkan saja

  if (pathname === '/admin/login') {

    return NextResponse.next();

  }


  const session = await getSession(req);


  if (!session.isLoggedIn) {

    const url = req.nextUrl.clone();

    url.pathname = '/admin/login';

    return NextResponse.redirect(url);

  }


  return NextResponse.next();

}


export const config = {

  matcher: '/admin/:path*',

};

perlu kalian ketahui cara ini akan berguna jika kalian menggunakan "redirect" tetapi jika menggantinya dengan rewrite maka kalian tidak perlu membuat pengecualian.

© 2015 [BUG] GEDEBUG All Rights Reserved.