Next-auth middleware
next-auth를 이용해서 로그인한 후 session을 통해 권한이 없다면 특정페이지로 이동할 수 없게끔 구현하기 위해
Next.js에서 지원하는 middleware를 생성했다
middleware는 요청 핸들러 전에 실행되는 함수로, 수신된 요청을 더 세밀하게 관리할 수 있도록 도와주는 역할을 한다
Next.js middleware공식 문서:
https://nextjs.org/docs/pages/building-your-application/routing/middleware
next-auth middleware 공식문서
https://next-auth.js.org/tutorials/securing-pages-and-api-routes
middleware란?
프로그래밍 언어에서 응용 소프트웨어가 운영체제로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어라는 뜻을 가지고 있다.
Next-auth에서 지원해 주는 getToken() 함수에 인자로 middleware가 받아오는 req와 secret을 인자로 주고
getToken의 결괏값으로 session을 받을 수 있다.
req에는 여러 가지 정보들이 있는데 그중에서 nextUrl을 통해 현재 페이지의 경로를 확인할 수 있다.
NextRequest와 NextReponse 공식 문서에서 nextUrl에 대한 정보가 있다.
https://nextjs.org/docs/pages/api-reference/functions/next-server
해당 경로를 확인하여 session을 확인하면서 상황에 맞게 다른 페이지로
NextResponse.redirect를 통해서 이동시켜 준다.