nextjs 15 접근 금지 페이지 forbidden.js로 쉽게 만드는 방법

nextjs 15 접근 금지 페이지 forbidden.js로 쉽게 만드는 방법
TILPosted On Apr 22, 20253 min read

forbidden.js 파일 설명

Next.js에서 인증 과정 중 forbidden 함수가 호출될 때 표시되는 UI를 커스터마이징할 수 있는 파일이 바로 forbidden.js예요. 이 파일을 통해 사용자가 권한이 없을 때 어떤 화면을 보여줄지 자유롭게 디자인할 수 있답니다. 그리고 중요한 점은, 이 컴포넌트를 렌더링하면 Next.js가 자동으로 HTTP 상태 코드 403(Forbidden)을 반환한다는 거예요.

예를 들어, 기본적인 forbidden.js는 아래처럼 작성할 수 있어요:

import Link from 'next/link'

export default function Forbidden() {
  return (
    <div>
      <h2>Forbidden</h2>
      <p>You are not authorized to access this resource.</p>
      <Link href="/">Return Home</Link>
    </div>
  )
}

조금 더 친근하게 메시지를 바꾸거나, 추가적인 안내 문구를 넣어 사용자 경험을 개선할 수도 있겠죠? 예를 들어, 로그인이 필요한 경우라면 로그인 페이지로 바로 가는 버튼을 추가하는 것도 좋은 방법이에요.

import Link from 'next/link'

export default function Forbidden() {
  return (
    <div style={{ textAlign: 'center', margin: '2rem' }}>
      <h2>접근 금지</h2>
      <p>이 페이지에 접근할 권한이 없어요.</p>
      <p>계속하려면 로그인이 필요합니다.</p>
      <Link href="/login">
        <a style={{ color: 'blue', textDecoration: 'underline' }}>로그인 하러 가기</a>
      </Link>
      <br />
      <Link href="/">
        <a style={{ color: 'gray', marginTop: '1rem', display: 'inline-block' }}>홈으로 돌아가기</a>
      </Link>
    </div>
  )
}

참고로, 이런 방식으로 UI를 커스텀하면 사용자에게 명확한 안내를 제공할 수 있고, 더 나은 사용자 경험(UX)을 만들 수 있다는 점 기억하세요!

참고자료

Props

forbidden.js 컴포넌트는 어떤 props도 받지 않습니다.

버전 히스토리

버전변경사항
v15.1.0forbidden.js가 새로 추가됨

버전 히스토리를 보면 forbidden.js는 v15.1.0에서 처음 등장했네요. 새로운 컴포넌트를 도입할 때는 이렇게 변경사항을 꼼꼼히 챙겨두면 나중에 관리할 때 정말 도움이 됩니다. 개발하면서 버전 관리는 꼭 습관처럼 하시길 추천드려요!