Vejo duas formas:
Páginas estáticas + API
Caso você gere páginas estáticas usando o Next.js, você não pode inibir ninguém de acessar elas no sentido de conseguir baixar o arquivo HTML que gera o esqueleto dela. Dado a isso, você pode preencher os dados dessa página usando as rotas da API e essa rota poderá ser bloqueada por quem não estiver autenticado. E com isso, você pode fazer o frontend reagir a isso, notar que o acesso a alguma rota tomou um 401
e redirecionar para a página de login.
Server-side Rendering (SSR)
Isso é o modelo mais tradicional de páginas, onde a cada request você tem total controle sobre o processamento, decidindo liberar o acesso ou não enquanto a request do client
ainda está pendurada no server
.