Вот несколько методов для реализации условных перенаправлений в Next.js на основе таких критериев, как статус аутентификации пользователя или его роль:

1. Перенаправления в getServerSideProps или getStaticProps

  • Проверьте условия внутри этих функций и инициируйте перенаправления с помощью res.writeHead() и **res.end():
export async function getServerSideProps(context) { 
	const isAuthenticated = await checkAuth(context.req); 
	
	if ( !isAuthenticated && context.resolvedUrl !== '/login' ){ 
		context.res .writeHead(302, { Location: '/login' }); 
		context.res.end(); 
		
		return { props: {} }; 
	} 
		
	// ...получение данных для аутентифицированных пользователей... 
}`

2. Перенаправления на стороне клиента с useEffect и router.push:

  • Выполните перенаправления на стороне клиента после рендеринга компонента:

 import { useEffect } from 'react'; 
 import { useRouter } from 'next/router'; 
 
 function MyPage() { 
	 const router = useRouter(); 
	 useEffect( () => { 
		 const isAuthenticated = checkAuth();
		 if (!isAuthenticated) { 
			 router.push('/login'); 
		}
	}, []); 

// ...содержимое страницы... 
}

Назад