unauthorized

La fonction unauthorized génère une erreur qui affiche une page d'erreur 401 dans Next.js. Elle est utile pour gérer les erreurs d'autorisation dans votre application. Vous pouvez personnaliser l'interface utilisateur en utilisant le fichier unauthorized.js.

Pour commencer à utiliser unauthorized, activez l'option de configuration expérimentale authInterrupts dans votre fichier next.config.js :

import type { NextConfig } from 'next'

const nextConfig: NextConfig = {
  experimental: {
    authInterrupts: true,
  },
}

export default nextConfig

unauthorized peut être appelée dans les Composants Serveur, les Actions Serveur et les Gestionnaires de Route.

import { verifySession } from '@/app/lib/dal'
import { unauthorized } from 'next/navigation'

export default async function DashboardPage() {
  const session = await verifySession()

  if (!session) {
    unauthorized()
  }

  // Afficher le tableau de bord pour les utilisateurs authentifiés
  return (
    <main>
      <h1>Bienvenue sur le Tableau de Bord</h1>
      <p>Bonjour, {session.user.name}.</p>
    </main>
  )
}

Bon à savoir

Exemples

Afficher une interface de connexion pour les utilisateurs non authentifiés

Vous pouvez utiliser la fonction unauthorized pour afficher le fichier unauthorized.js avec une interface de connexion.

import { verifySession } from '@/app/lib/dal'
import { unauthorized } from 'next/navigation'

export default async function DashboardPage() {
  const session = await verifySession()

  if (!session) {
    unauthorized()
  }

  return <div>Tableau de bord</div>
}

Mutations avec Actions Serveur

Vous pouvez appeler unauthorized dans les Actions Serveur pour vous assurer que seuls les utilisateurs authentifiés peuvent effectuer des mutations spécifiques.

'use server'

import { verifySession } from '@/app/lib/dal'
import { unauthorized } from 'next/navigation'
import db from '@/app/lib/db'

export async function updateProfile(data: FormData) {
  const session = await verifySession()

  // Si l'utilisateur n'est pas authentifié, retourne un 401
  if (!session) {
    unauthorized()
  }

  // Poursuivre la mutation
  // ...
}

Récupération de données avec les Gestionnaires de Route

Vous pouvez utiliser unauthorized dans les Gestionnaires de Route pour vous assurer que seuls les utilisateurs authentifiés peuvent accéder au point de terminaison.

import { NextRequest, NextResponse } from 'next/server'
import { verifySession } from '@/app/lib/dal'
import { unauthorized } from 'next/navigation'

export async function GET(req: NextRequest): Promise<NextResponse> {
  // Vérifier la session de l'utilisateur
  const session = await verifySession()

  // Si aucune session n'existe, retourne un 401 et affiche unauthorized.tsx
  if (!session) {
    unauthorized()
  }

  // Récupérer les données
  // ...
}

Historique des versions

VersionChangements
v15.1.0Introduction de unauthorized.

On this page