*공식 문서 참고
- 로그인 한 상태라면 로그인, 회원가입 페이지 접근X -> /home 으로 redirect
- 반대로 로그인 안 한 유저라면 그 외 모든 페이지 접근 불가 -> /login 으로 redirect
import { NextRequest, NextResponse } from 'next/server'
import { cookies } from 'next/headers'
import { setHeaderToken } from './func/fetchCall'
export async function middleware(request: NextRequest) {
const cookieStore = cookies()
const accessToken = cookieStore.get('accessToken')
//쿠키에 저장된 accessToken 값 여부 확인
if (!accessToken) {
return NextResponse.redirect('/login') // 없다면 미로그인 상태로 인지
}
setHeaderToken(accessToken + '')
if (
request.nextUrl.pathname.startsWith('/login') ||
request.nextUrl.pathname.startsWith('/createAccount')
) { // 요청 url이 Login이거나 createAccount일 경우 && 토큰값이 있다면
// 로그인된 상태로 인지, Home 으로 redirect
if (accessToken) return NextResponse.redirect('/home')
}
}
export const config = {
matcher: [
'/',
'/profile/:path*',
'/home/:path*',
'/explore/:path*',
'/messages/:path*',
'/member/:path*',
'/mypage/:path*',
'/notifications/:path*',
'/record/:path*',
'/recruit/:path*',
'/login',
'/createAccount',
],
}