Server side에서 인증 과정을 통합하기 위해 찾아보다 Nextjs 12부터 middleware를 지원하는 것을 알았다.

 

프로젝트 폴더에 middleware.ts를 만들고 경로를 지정해주면 middleware로 동작한다.

import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";

const passingPath = ["/login", "/signup"];
const homePath = ["/"];
const checkingPath = ["/diary"];

export function middleware(req: NextRequest) {
  const { pathname, origin } = req.nextUrl;
  const token = req.cookies.get("Authorization")?.value;

  if (token && passingPath.includes(pathname)) {
    return NextResponse.redirect(origin);
  }

  if (
    !token &&
    (homePath.includes(pathname) ||
      checkingPath.some((path) => pathname.startsWith(path)))
  ) {
    return NextResponse.redirect(`${origin}/login`);
  }

  return NextResponse.next();
}

인증 과정을 통합할 것이기 때문에 따로 경로를 지정해주지 않았다. 

'개발 > web' 카테고리의 다른 글

[react-query] lazy query 와 invalidateQueries  (0) 2023.03.29
[Nextjs] useEffect vs useLayoutEffect  (0) 2023.03.24
[Nextjs] hydration  (0) 2023.03.24
[ES] elasticsearch error  (0) 2022.08.20
[React] sass-loader 설정 오류 해결법  (0) 2020.05.22

+ Recent posts