forbidden
Die forbidden
-Funktion wirft einen Fehler, der eine Next.js 403-Fehlerseite rendert. Sie ist nützlich für die Behandlung von Autorisierungsfehlern in Ihrer Anwendung. Die Benutzeroberfläche kann mit der forbidden.js
-Datei angepasst werden.
Um forbidden
zu verwenden, aktivieren Sie die experimentelle authInterrupts
-Konfigurationsoption in Ihrer next.config.js
-Datei:
import type { NextConfig } from 'next'
const nextConfig: NextConfig = {
experimental: {
authInterrupts: true,
},
}
export default nextConfig
module.exports = {
experimental: {
authInterrupts: true,
},
}
forbidden
kann in Server Components, Server Actions und Route Handlers aufgerufen werden.
import { verifySession } from '@/app/lib/dal'
import { forbidden } from 'next/navigation'
export default async function AdminPage() {
const session = await verifySession()
// Überprüfen, ob der Benutzer die 'admin'-Rolle hat
if (session.role !== 'admin') {
forbidden()
}
// Admin-Seite für autorisierte Benutzer rendern
return <></>
}
import { verifySession } from '@/app/lib/dal'
import { forbidden } from 'next/navigation'
export default async function AdminPage() {
const session = await verifySession()
// Überprüfen, ob der Benutzer die 'admin'-Rolle hat
if (session.role !== 'admin') {
forbidden()
}
// Admin-Seite für autorisierte Benutzer rendern
return <></>
}
Wissenswertes
- Die
forbidden
-Funktion kann nicht im Root Layout aufgerufen werden.
Beispiele
Rollenbasierter Routenschutz
Mit forbidden
kann der Zugriff auf bestimmte Routen basierend auf Benutzerrollen eingeschränkt werden. Dies stellt sicher, dass authentifizierte Benutzer ohne die erforderlichen Berechtigungen die Route nicht aufrufen können.
import { verifySession } from '@/app/lib/dal'
import { forbidden } from 'next/navigation'
export default async function AdminPage() {
const session = await verifySession()
// Überprüfen, ob der Benutzer die 'admin'-Rolle hat
if (session.role !== 'admin') {
forbidden()
}
// Admin-Seite für autorisierte Benutzer rendern
return (
<main>
<h1>Admin-Dashboard</h1>
<p>Willkommen, {session.user.name}!</p>
</main>
)
}
import { verifySession } from '@/app/lib/dal'
import { forbidden } from 'next/navigation'
export default async function AdminPage() {
const session = await verifySession()
// Überprüfen, ob der Benutzer die 'admin'-Rolle hat
if (session.role !== 'admin') {
forbidden()
}
// Admin-Seite für autorisierte Benutzer rendern
return (
<main>
<h1>Admin-Dashboard</h1>
<p>Willkommen, {session.user.name}!</p>
</main>
)
}
Mutationen mit Server Actions
Bei der Implementierung von Mutationen in Server Actions kann forbidden
verwendet werden, um nur Benutzern mit einer bestimmten Rolle das Aktualisieren sensibler Daten zu erlauben.
'use server'
import { verifySession } from '@/app/lib/dal'
import { forbidden } from 'next/navigation'
import db from '@/app/lib/db'
export async function updateRole(formData: FormData) {
const session = await verifySession()
// Nur Admins dürfen Rollen aktualisieren
if (session.role !== 'admin') {
forbidden()
}
// Rollenaktualisierung für autorisierte Benutzer durchführen
// ...
}
'use server'
import { verifySession } from '@/app/lib/dal'
import { forbidden } from 'next/navigation'
import db from '@/app/lib/db'
export async function updateRole(formData) {
const session = await verifySession()
// Nur Admins dürfen Rollen aktualisieren
if (session.role !== 'admin') {
forbidden()
}
// Rollenaktualisierung für autorisierte Benutzer durchführen
// ...
}
Versionsverlauf
Version | Änderungen |
---|---|
v15.1.0 | forbidden eingeführt. |