Capítulo 178 de 456
Lança um erro que renderiza uma página 401 do Next.js, para tratar casos de autenticação ausente; requer a flag experimental authInterrupts.
NEXT_HTTP_ERROR_FALLBACK;401 e termina o render do segmento onde foi chamado; injeta <meta name="robots" content="noindex" />.next.config.js (experimental: { authInterrupts: true }) antes de usar unauthorized.awaitada por componente; em promise não aguardada, nada captura e nenhuma UI renderiza.// next.config.ts
const nextConfig: NextConfig = {
experimental: { authInterrupts: true },
}
export default nextConfig
unauthorized().// app/dashboard/page.tsx
import { verifySession } from '@/app/lib/dal'
import { unauthorized } from 'next/navigation'
export default async function DashboardPage() {
const session = await verifySession()
if (!session) {
unauthorized()
}
return <main><h1>Welcome to the Dashboard</h1></main>
}
// Checagem dentro de Suspense para manter shell visível
async function getAccount() {
const session = await verifySession()
if (!session) unauthorized()
return db.accounts.findByUserId(session.userId)
}
async function AccountDetails() {
const account = await getAccount()
return <p>Signed in as {account.email}</p>
}
| Version | Changes |
|---|---|
| v15.1.0 | unauthorized introduzido |
try/catch sem unstable_rethrow: suprime o erro e a UI de unauthorized não renderiza.<Suspense>, a resposta já começou como 200; para 401 real, cheque em proxy antes do stream (com Cache Components).authInterrupts no config antes de funcionar.unauthorized.js para customizar a UI (ex.: exibir formulário de login).