forbidden

تقوم دالة forbidden بإلقاء خطأ يعرض صفحة خطأ 403 من Next.js. وهي مفيدة للتعامل مع أخطاء التخويل في تطبيقك. يمكنك تخصيص واجهة المستخدم باستخدام ملف forbidden.js.

لبدء استخدام forbidden، قم بتمكين خيار التكوين التجريبي authInterrupts في ملف next.config.js الخاص بك:

import type { NextConfig } from 'next'

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

export default nextConfig
module.exports = {
  experimental: {
    authInterrupts: true,
  },
}

يمكن استدعاء forbidden في مكونات الخادم (Server Components)، أفعال الخادم (Server Actions)، ومعالجات المسارات (Route Handlers).

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

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

  // التحقق مما إذا كان لدى المستخدم دور 'admin'
  if (session.role !== 'admin') {
    forbidden()
  }

  // عرض صفحة المسؤول للمستخدمين المصرح لهم
  return <></>
}
import { verifySession } from '@/app/lib/dal'
import { forbidden } from 'next/navigation'

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

  // التحقق مما إذا كان لدى المستخدم دور 'admin'
  if (session.role !== 'admin') {
    forbidden()
  }

  // عرض صفحة المسؤول للمستخدمين المصرح لهم
  return <></>
}

معلومات مفيدة

أمثلة

حماية المسار بناءً على الدور

يمكنك استخدام forbidden لتقييد الوصول إلى مسارات معينة بناءً على أدوار المستخدمين. وهذا يضمن أن المستخدمين الذين تمت مصادقتهم ولكنهم يفتقرون إلى الأذونات المطلوبة لا يمكنهم الوصول إلى المسار.

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

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

  // التحقق مما إذا كان لدى المستخدم دور 'admin'
  if (session.role !== 'admin') {
    forbidden()
  }

  // عرض صفحة المسؤول للمستخدمين المصرح لهم
  return (
    <main>
      <h1>لوحة تحكم المسؤول</h1>
      <p>مرحبًا، {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()

  // التحقق مما إذا كان لدى المستخدم دور 'admin'
  if (session.role !== 'admin') {
    forbidden()
  }

  // عرض صفحة المسؤول للمستخدمين المصرح لهم
  return (
    <main>
      <h1>لوحة تحكم المسؤول</h1>
      <p>مرحبًا، {session.user.name}!</p>
    </main>
  )
}

التغييرات باستخدام أفعال الخادم

عند تنفيذ التغييرات في أفعال الخادم، يمكنك استخدام forbidden للسماح فقط للمستخدمين الذين لديهم دور محدد بتحديث البيانات الحساسة.

'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()

  // التأكد من أن المسؤولين فقط يمكنهم تحديث الأدوار
  if (session.role !== 'admin') {
    forbidden()
  }

  // تنفيذ تحديث الدور للمستخدمين المصرح لهم
  // ...
}
'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()

  // التأكد من أن المسؤولين فقط يمكنهم تحديث الأدوار
  if (session.role !== 'admin') {
    forbidden()
  }

  // تنفيذ تحديث الدور للمستخدمين المصرح لهم
  // ...
}

سجل الإصدارات

الإصدارالتغييرات
v15.1.0تم تقديم forbidden.